1 时间格式转换
一般用的是yyyyMMddHHmmss 或者 yyyy-MM-dd HH:mm:ss
yyyyMMddHHmmss转yyyy-MM-dd HH:mm:ss
def transformDate(str1:String)={
var str2 = str1
val format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val format2 = new SimpleDateFormat("yyyyMMddHHmmss")
if (str1.contains("-")){
var date = format1.parse(str1)
str2 = format2.format(date)
}
str2
}
yyyy-MM-dd HH:mm:ss转yyyyMMddHHmmss
def transformDate2(str1:String)={
var str2 = str1
val format1 = new SimpleDateFormat("yyyyMMddHHmmss")
val format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
if (!str1.contains("-")){
var date = format1.parse(str1)
str2 = format2.format(date)
}
str2
}
2 给定时间间隔计算时间
以yyyyMMddHHmmss格式为例,其他时间格式可以用1 先转化为该格式
- 以天为单位
//nowdate是需要计算的当前日期,格式为(yyyyMMdd) delay为负 为向过去推; 为正 为向未来推
//time是时分秒格式为(HHmmss)
def getPriorNDay(nowdate: String, delay: String, time: String): String = {
val format = new SimpleDateFormat("yyyyMMdd")
val fr = new java.text.SimpleDateFormat("yyyyMMdd")
var mdate = ""
val d = fr.parse(nowdate)
val myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60 // d.getTime 获得的是当前的毫秒 /1000 换算成秒,
d.setTime(myTime * 1000)
mdate = format.format(d)
mdate + time
}
println(getPriorNDay("20190917", "-1", "232323"))
结果:20190916232323
- 以小时为单位
def getPriorNHour(nowdate: String, delay: String, time: String): String = {
val format = new SimpleDateFormat("yyyyMMddHH")
val fr = new java.text.SimpleDateFormat("yyyyMMddHH")
var mdate = ""
val d = fr.parse(nowdate)
val myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 60 * 60
d.setTime(myTime * 1000)
mdate = format.format(d)
mdate + time
}
println(getPriorNHour("2019091714", "-1", "1414"))
println(getPriorNHour("20190917141516".substring(0,10), "-1", "1414"))
结果:20190916232323
- 以分钟为单位
def getPriorNTime(nowdate: String, delay: String): String = {
val format = new SimpleDateFormat("yyyyMMddHHmmss")
val fr = new java.text.SimpleDateFormat("yyyyMMddHHmmss")
var mdate = ""
val d = fr.parse(nowdate)
val myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 60 // d.getTime 获得的是当前的毫秒 /1000 换算成秒,
d.setTime(myTime * 1000)
mdate = format.format(d)
mdate
}
println(getPriorNTime("20190917101010", "-60"))
结果:20190917091010