- 个人开发中常用日期转换以及方法、注解汇总
- hutool工具
- 依赖:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.0</version>
</dependency>
- 常用时间获取
//当前时间
System.out.println("hutool 当前时间:"+DateUtil.now());
//今天开始时间
System.out.println("hutool 今天开始时间"+DateUtil.beginOfDay(new Date()));
//今天结束时间
System.out.println("hutool 今天结束时间"+DateUtil.endOfDay(new Date()));
//昨天开始时间
System.out.println("hutool 昨天开始时间"+DateUtil.beginOfDay(DateUtil.yesterday()).toJdkDate());
//昨天结束时间
System.out.println("hutool 昨天开始时间"+ DateUtil.endOfDay(DateUtil.yesterday()).toJdkDate());
//本周开始时间
System.out.println("hutool 本周开始时间"+DateUtil.beginOfWeek(new Date()));
//本周结束时间
System.out.println("hutool 本周结束时间"+DateUtil.endOfWeek(new Date()));
// 昨天开始到结束 之间的分钟数
long between = DateUtil.between(DateUtil.beginOfDay(DateUtil.yesterday()).toJdkDate(), DateUtil.endOfDay(DateUtil.yesterday()).toJdkDate(), DateUnit.MINUTE);
System.out.println("昨天开始到结束 之间的分钟数"+between);
- 运行结果:
String,Date,DateTime互转
String date = "2023-05-12 17:36:00";
//String 转Date
Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
//String 转dateTime
DateTime dateTime = DateTime.of(date1);
Date date2 = new Date();
//Date 转 String
String fmdate2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date2);
//Date转DateTime
DateTime dateTime1 = new DateTime(date2.getTime());
DateTime date3 = new DateTime();
//DateTime转Date
Date date4 = date3.toJdkDate();
//DateTime转String
String dateTimefm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date3);
运行结果:
数据库: Mysql ,date与DateTime区别
- 数据库日期类型 : 不能为空,想存空值可以用字符串类型
- 如果时间需要 精确到 时分秒,可以选择Datetime
- 区别:
- Date类型
- dateTime类型
-
注解-转载
- 依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.6</version>
</dependency>
- 注解@JsonFormat主要是后台到前台的时间格式的转换
- 注解@DataFormAT主要是前台到后台的时间格式的转换
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
mybatis查询Oracle数据库中Date类型自动转化为时间戳
@JSONField(format ="yyyy-MM-dd HH:mm:ss")
private Date gmtModified;
- 存储在MYSQL中的数据是dateTime类型,将数据获取以后封装到实体类中的时候,就会变成英文的时间格式(Wed Jul 27 02:26:43 CST 2022),而不是yyyy-MM-dd HH:mm:ss格式的时间(2022-07-27 02:26:43),@JsonFormat注解就可以解决这个问题。
- @DateTimeFormat 直接接收指定的时间格式,既灵活又方便。
时间类常用方法
- date的before ,after判断早于或晚
String date = "2023-05-12 17:36:00";
String datefm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
//String 转Date
Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
boolean before = date1.before(new Date());
boolean after = date1.after(new Date());
System.out.println("====================");
System.out.println("当前时间:"+datefm);
System.out.println("date日期早于当前时间:" + before);
System.out.println("date日期晚于当前时间:" + after);
- 运行结果:
- 判断两个日期间隔
String date = "2023-05-12 17:36:00";
//String 转Date
Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
long SecondBetween = DateUtil.between(date1,new Date(), DateUnit.SECOND);
long MinuteBetween = DateUtil.between(date1,new Date(), DateUnit.MINUTE);
long HourBetween = DateUtil.between(date1,new Date(), DateUnit.HOUR);
long DayBetween = DateUtil.between(date1,new Date(), DateUnit.DAY);
long WeekBetween = DateUtil.between(date1,new Date(), DateUnit.WEEK);
System.out.println("两个时间间隔 秒 :" + SecondBetween);
System.out.println("两个时间间隔 分 :" + MinuteBetween);
System.out.println("两个时间间隔 时 :" + HourBetween);
System.out.println("两个时间间隔 天 :" + DayBetween);
System.out.println("两个时间间隔 周 :" + WeekBetween);
- 运行结果:
- 获取今天的某个开始的小时(把 day修改就可以获取任意时刻):
/**
* 获取当天 某个 小时
*/
public static Date getSomeHour(Integer hour,Integer minue,Integer second){
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minue);
calendar.set(Calendar.SECOND, second);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTime();
}
public static void main(String[] args) {
Date someHour = DateUtils.getSomeHour(15, 0, 0);
System.out.println("==================");
String datefm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(someHour);
System.out.println("获取今天的 15点 :" + datefm);
}
运行结果:
- 获取某个时间是星期几
DateTime startTime = DateUtil.parse("2023-05-21 15:00:00","yyyy-MM-dd HH:mm:ss");
int week = DateUtil.dayOfWeek(startTime);
String[] weekStr={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
String holiday = weekStr[week - 1];
log.info("当前日期:"+holiday);
- 运行结果
- 分享完毕