1、日期工具类
package com.dream.utils
import java.util.{Calendar, Date}
import org.apache.commons.lang3.time.FastDateFormat
/**
* @title: DateUtil
* @projectName SparkStudy
* @description: 日期时间工具类
* @author MXH
* @date 2023/9/1 16:03
*/
object DateUtil {
// 格式: 年-月-日 小时:分钟:秒
val LONG_DATA_FORMAT: String = "yyyy-MM-dd HH:mm:ss"
// 格式:年-月-日
val SHORT_DATA_FORMAT: String = "yyyy-MM-dd"
/**
* 把日期转换为字符串
* @param date 日期
* @param format 格式
* @return
*/
def dateToString(date: Date, format: String): String = {
// 构建FastDateFormat对象(大数据中不要用SimpleDateFormat,线程不安全)
val formatter: FastDateFormat = FastDateFormat.getInstance(format)
// 转换格式
formatter.format(date)
}
/**
* 获取当前日期字符串,默认格式为"yyyy-MM-dd"
* @param format 日期格式
* @return
*/
def getNow(format: String = SHORT_DATA_FORMAT): String = {
// 获取当前Calendar对象
val today: Calendar = Calendar.getInstance()
// 返回字符串
dateToString(today.getTime,format)
}
/**
* 依据日期时间增加或减少多少天
* @param dateStr 日期字符串
* @param days 天数,可以为正数,也可以为负数
* @param format 格式
* @return
*/
def dateCalculate(dateStr: String, days: Int, format: String = SHORT_DATA_FORMAT): String = {
// 将日期字符串转换成Date类型
val date: Date = stringToDate(dateStr,format)
// 获取Calendar对象
val calendar: Calendar = Calendar.getInstance()
calendar.setTime(date)
// 设置天数(增加或减少)
calendar.add(Calendar.DAY_OF_YEAR, days)
// 转换Date为字符串
dateToString(calendar.getTime,format)
}
/**
* 把日期格式的字符串转换为日期Date类型
* @param dateStr 日期格式字符串
* @param format 格式
* @return
*/
def stringToDate(dateStr: String, format: String): Date = {
// 构建FastDateFormat对象
val formatter: FastDateFormat = FastDateFormat.getInstance(format)
// 转换格式
formatter.parse(dateStr)
}
def main(args: Array[String]): Unit = {
// 当前日期
val nowDate: String = getNow()
println(nowDate)
// 前一天日期
val yesterday: String = dateCalculate(nowDate, -1)
println(yesterday)
// 一月后日期
val later: String = dateCalculate(nowDate,30)
println(later)
}
}