时间转换函数(scala)

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)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值