import java.time.format.DateTimeFormatter
import java.time.{Instant, LocalDate, LocalDateTime, ZoneId}
object TimeUtils {
def getVpnTimestamp(date: String): Long = {
val dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")
val parse: LocalDateTime = LocalDateTime.parse(date, dtf)
LocalDateTime.from(parse).atZone(ZoneId.systemDefault).toInstant.toEpochMilli
}
def getTimestamp(date: String): Long = {
val dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd - HH:mm:ss.SSS")
val parse: LocalDateTime = LocalDateTime.parse(date, dtf)
LocalDateTime.from(parse).atZone(ZoneId.systemDefault).toInstant.toEpochMilli
}
// 根据时间戳获取日期时间字符串 格式: yyyyMMdd
def getDay(timestamp: Long): String = {
val dtf = DateTimeFormatter.ofPattern("yyyyMMdd")
dtf.format(
LocalDateTime.ofInstant(
Instant.ofEpochMilli(timestamp),
ZoneId.systemDefault
)
)
}
def getDayInt(timestamp: Long): Int = {
val dtf = DateTimeFormatter.ofPattern("yyyyMMdd")
dtf.format(
LocalDateTime.ofInstant(
Instant.ofEpochMilli(timestamp),
ZoneId.systemDefault
)
).toInt
}
def getMonth(timestamp: Long): String = {
val dtf = DateTimeFormatter.ofPattern("yyyyMM")
dtf.format(
LocalDateTime.ofInstant(
Instant.ofEpochMilli(timestamp),
ZoneId.systemDefault
)
)
}
def getDay2(timestamp: Long): String = {
val dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd")
dtf.format(
LocalDateTime.ofInstant(
Instant.ofEpochMilli(timestamp),
ZoneId.systemDefault
)
)
}
def getDay3(timestamp: Long): String = {
val dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd/HH:mm:ss")
dtf.format(
LocalDateTime.ofInstant(
Instant.ofEpochMilli(timestamp),
ZoneId.systemDefault
)
)
}
// 根据时间戳获取日期时间字符串 格式: yyyyMMddHH
def getHour(timestamp: Long): String = {
val dtf = DateTimeFormatter.ofPattern("yyyyMMddHH")
dtf.format(
LocalDateTime.ofInstant(
Instant.ofEpochMilli(timestamp),
ZoneId.systemDefault
)
)
}
// 获取分区小时
def getHour2(timestamp: Long): String = {
val dtf = DateTimeFormatter.ofPattern("HH")
dtf.format(
LocalDateTime.ofInstant(
Instant.ofEpochMilli(timestamp),
ZoneId.systemDefault
)
)
}
// 获取 kafka时间戳
def getKafkaTimestamp(date: String): Long = {
val dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd/HH:mm:ss")
val parse: LocalDateTime = LocalDateTime.parse(date, dtf)
LocalDateTime.from(parse).atZone(ZoneId.systemDefault).toInstant.toEpochMilli
}
// 根据日期时间字符串(yyyyMMddHHmm)获取时间戳
def getTimeStampMin(date: String): Long = {
val dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmm")
val parse: LocalDateTime = LocalDateTime.parse(date, dtf)
LocalDateTime.from(parse).atZone(ZoneId.systemDefault).toInstant.toEpochMilli / 1000L
}
// 根据日期时间字符串(yyyyMMddHHmm)获取时间戳
def getTimeStampMin2(date: String): Long = {
val dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmm")
val parse: LocalDateTime = LocalDateTime.parse(date, dtf)
LocalDateTime.from(parse).atZone(ZoneId.systemDefault).toInstant.toEpochMilli
}
def getTimeStamp(date: Int): Long = {
val dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmm")
val parse: LocalDateTime = LocalDateTime.parse(date + "0000", dtf)
LocalDateTime.from(parse).atZone(ZoneId.systemDefault).toInstant.toEpochMilli
}
// 由yyyyMMdd or yyyyMMddHH 获取10位时间戳
def getUnixTimeStamp(t: String): Long = {
if (t.length == 8) {
getTimeStampHour(t + "00")
} else getTimeStampHour(t)
}
// 根据日期时间字符串(yyyyMMddHH)获取时间戳
def getTimeStampHour(date: String): Long = {
val dtf = DateTimeFormatter.ofPattern("yyyyMMddHH")
val parse: LocalDateTime = LocalDateTime.parse(date, dtf)
LocalDateTime.from(parse).atZone(ZoneId.systemDefault).toInstant.toEpochMilli / 1000L
}
// 获取10位时间戳
def getTimestamp3(date: String): Long = {
val dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
val parse: LocalDateTime = LocalDateTime.parse(date, dtf)
LocalDateTime.from(parse).atZone(ZoneId.systemDefault).toInstant.toEpochMilli / 1000
}
// 获取13位时间戳
def getTimestamp4(date: String): Long = {
val dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
val parse: LocalDateTime = LocalDateTime.parse(date, dtf)
LocalDateTime.from(parse).atZone(ZoneId.systemDefault).toInstant.toEpochMilli
}
def getMinus90day: String = {
LocalDate.now.minusDays(90).toString
}
def getMinus60day: String = {
LocalDate.now.minusDays(30).toString
}
def getMinus30day: String = {
LocalDate.now.minusDays(30).toString
}
def getMinus3day: String = {
LocalDate.now.minusDays(3).toString
}
def getMinus7day: String = {
LocalDate.now.minusDays(7).toString
}
def getMinus1day: String = {
LocalDate.now.minusDays(1).toString
}
def getMinus0day: String = {
LocalDate.now.minusDays(0).toString
}
// 根据时间戳获取日期时间字符串 格式: yyyyMMddHHmm
def getMin(timestamp: Long): String = {
val dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmm")
dtf.format(
LocalDateTime.ofInstant(
Instant.ofEpochMilli(timestamp),
ZoneId.systemDefault
)
)
}
def getMin2(timestamp: Long): String = {
val dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
dtf.format(
LocalDateTime.ofInstant(
Instant.ofEpochMilli(timestamp),
ZoneId.systemDefault
)
)
}
// 时间差
def getByDay(time: String, day: String): Int = {
val timeDtf = DateTimeFormatter.ofPattern("yyyyMMdd")
val hourDtf = DateTimeFormatter.ofPattern("yyyyMMdd")
val parse2: LocalDate = LocalDate.parse(time, timeDtf)
val parse: LocalDate = LocalDate.parse(day, hourDtf)
parse.compareTo(parse2)
}
01-23
643