时间string类型常见形式:“2021-05-18 19:33:16” 1.获取当前时间 2.获取昨天日期 3.计算时间差 4.指定日期和间隔天数,返回指定日期前N天的日期 date - N days 5.指定日期和间隔小时,返回指定日期前N小时的日期 date - N days 6.指定日期和间隔小时,返回指定日期后N小时的日期 date - N days 7.时间与时间戳互相转换 8.根据时间戳获取 DAY_OF_WEEK 代码实现如下:
package com.sf.spark.util
import java.text.{DecimalFormat, SimpleDateFormat}import java.util.{Calendar, Date}/**
* Created by Jinhui Yang on 2018/7/17 11:23
* Modified by:
* Version: 0.0.1
* Usage:
*
*/
object DateUtil extendsSerializable{/**
* 获取当前系统时间,时间格式为:yyyy-MM-dd HH:mm:ss.SSS
* @return yyyy-MM-dd HH:mm:ss.SSS
*/
def getNowDate:String={
val now =newDate()
now.getTime
val dateFormat =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
val result = dateFormat.format( now )
result
}/**
* 获取昨天日期
* @return
*/
def getYesterday():String={
val dateFormat: SimpleDateFormat =newSimpleDateFormat("yyyy-MM-dd")
val cal: Calendar = Calendar.getInstance()
cal.add(Calendar.DATE,-1)
val yesterday = dateFormat.format(cal.getTime)
yesterday
}/**
* 计算时间差
* @param start_time
* @param end_Time
* @return 相差小时/h
*/
def getDiffTime(start_time:String,end_Time:String)={
val df:SimpleDateFormat=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss")// val df:SimpleDateFormat=new SimpleDateFormat("HH:mm:ss")
val begin:Date=df.parse(start_time)
val end:Date = df.parse(end_Time)
val between:Long=(end.getTime-begin.getTime)/1000//转化成秒
val hour:Float=between.toFloat/3600
hour
// val decf:DecimalFormat=new DecimalFormat("#0.00")// decf.format(hour)//格式化}/**
* 指定日期和间隔天数,返回指定日期前N天的日期 date - N days
* @param dt
* @param interval
* @return
*/
def getDaysBefore(dt: Date, interval: Int):String ={
val dateFormat: SimpleDateFormat =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val cal: Calendar = Calendar.getInstance()
cal.setTime(dt)
cal.add(Calendar.DATE,- interval)
val yesterday = dateFormat.format(cal.getTime)
yesterday
}/**
* 指定日期和间隔小时,返回指定日期后N小时的日期 date - N days
* @param dt
* @param interval
* @return
*/
def getHoursAfter(dt: Date, interval: Int):String ={
val dateFormat: SimpleDateFormat =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val cal: Calendar = Calendar.getInstance()
cal.setTime(dt)
cal.add(Calendar.HOUR,+ interval)
val yesterday = dateFormat.format(cal.getTime)
yesterday
}/**
* 指定日期和间隔小时,返回指定日期前N小时的日期 date - N days
* @param dt
* @param interval
* @return
*/
def getHoursBefore(dt: Date, interval: Int):String ={
val dateFormat: SimpleDateFormat =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val cal: Calendar = Calendar.getInstance()
cal.setTime(dt)
cal.add(Calendar.HOUR,- interval)
val yesterday = dateFormat.format(cal.getTime)
yesterday
}/**
* 时间转换为时间戳
* @param tm
* @return
*/
def tranTimeToLong(tm:String):Long={
val fm =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val dt = fm.parse(tm)
val aa = fm.format(dt)
val tim: Long = dt.getTime
tim
}
def tranTimeToDate(tm:String):Date={
val newtime :Date =newSimpleDateFormat("yyyyMMdd").parse(tm)
newtime
}/**
* 时间戳转化为时间
* @param tm
* @return
*/
def tranTimeToString(tm:String):String={
val fm =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val tim = fm.format(newDate(tm.toLong))
tim
}/**
* 时间戳转化为时间
*
* @param tm
* @return
*/
def tranTimeToString(tm: Long): String ={
val fm =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val tim = fm.format(newDate(tm))
tim
}/**
* 根据时间戳获取 DAY_OF_WEEK
* @param tm
* @return
*/
def getWeek(tm:Long): Int ={
val cal: Calendar = Calendar.getInstance()
cal.setTimeInMillis(tm)
val o = cal.get(Calendar.DAY_OF_WEEK)
val week =if(o==Calendar.SUNDAY)7else o-1
week
}}
借助java中的Date与Calendar实现时间类型互相转换时间戳:与1970年间隔的毫秒数-1621337596326时间string类型常见形式:“2021-05-18 19:33:16”1.获取当前时间2.获取昨天日期3.计算时间差4.指定日期和间隔天数,返回指定日期前N天的日期 date - N days5.指定日期和间隔小时,返回指定日期前N小时的日期 date - N days6.指定日期和间隔小时,返回指定日期后N小时的日期 date - N days7.时间与时间戳互相