JAVA时间类型:Date、Calendar、SimpleDateFormat、LocalDate 、LocalTime、LocalDateTime、DateTimeFor的使用与转换

JAVA时间类型:Date、Calendar、SimpleDateFormat、LocalDate 、LocalTime、LocalDateTime、DateTimeFor的使用与转换

一、Date、SimpleDateFormat

//获取当前时间
 Date date = new Date();  // Mon Jul 17 11:34:57 CST 2023
//格式化时间
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 String dateStr = sdf.format(date); //2023-07-17 11:38:52
//获取时间戳
 long time = date.getTime(); // 1689565273205
 Date date2 = sdf.parse("2023-01-03 00:00:00");
 //判断此日期是否在指定日期之前
 boolean before = date2.before(date); // true
 //判断此日期是否在指定日期之后
 boolean after = date.after(date2); // true
 //转换成Instant 
 Instant instant =date.toInstant(); 

其他获取年月日方法基本不用了就不写了

二、Calendar

可以把Calendar看做是Date类的plus版本。但是其底部也是通过new Date() 获取Date实例

常量描述
Calendar.YEAR
Calendar.MONTH
Calendar.DATE日期
Calendar.DAY_OF_MONTH日期
Calendar.HOUR12小时制的小时
Calendar.HOUR_OF_DAY24小时制的小时
Calendar.MINUTE分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK星期几
//抽象类不能直接获取对象, 注意calendar修改后其对象本身表示的时间将产生变化
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   
   Calendar calendar = Calendar.getInstance();
   Date date= calendar.getTime(); //获取时间
   calendar.setTime(sdf.parse("2023-07-07 00:00:00"));  //设置时间
   Date dateNew = calendar.getTime(); //获取时间
   //转换  此时结果为2023-07-07 00:00:00
   String dateStr = dateFormat.format(dateNew);
   //获取某个时间字段信息
   calendar.get(Calendar.YEAR);  // 2023
   //年字段增加/减少指定的值
   calendar.add(Calendar.YEAR, 1); // 2024
   //月字段增加/减少指定的值
   calendar.add(Calendar.MONTH, 1); 
   // 月是从0开始此时单独获取月返回的是7需要注意,所有一半都是结果加一
   calendar.get(Calendar.MONTH); 
   sdf.format(calendar.getTime()); // 2024-08-07 00:00:00
   

   // 其余用表格列出

三、LocalDate 、LocalTime、LocalDateTime

LocalDate  只包含年月日
localTime   只包含日期 (注意结果不止时分秒)
localDateTime  包含日期和时间

获取年月日(方法相同用localDateTime)

//创建对象
LocalDate localDate = LocalDate.now(); // 2023-07-17
LocalTime localTime = LocalTime.now(); // 14:22:08.710
LocalDateTime localDateTime = LocalDateTime.now(); // 2023-07-17T14:22:08.710

//年
localDateTime.getYear(); // 2023
//月
localDateTime.getMonth(); // JULY
//月
localDateTime.getMonthValue(); // 7 此处返回是正常结果无需+1
//获取年中第几天
localDateTime.getDayOfYear(); // 198
//获取月中第几天
localDateTime.getDayOfMonth();// 17
//获取星期
localDateTime.getDayOfWeek(); //MONDAY	

修改年月日(方法相同用localDate)

LocalDate localDate = LocalDatee.now(); // 2023-07-17

 //修改该日期的年份
 LocalDate  localDate1 = localDate.withYear(1999); // 1999-07-17
 //修改当前的日期的月份
 LocalDate  localDate2 = localDate.withMonth(2); // 2023-02-17
 //修改该日期当月的天数
 LocalDate  localDate3 = localDate.withDayOfMonth(12); // 2023-07-12
 //增加修改日期(正数;负数) 
 //年加一
 LocalDate  localDate4 = localDate.plusDays(1); // 2024-07-17
 //年减一 
 LocalDate  localDate4 = localDate.minusDays(1); // 2024-07-17
 //日期加一
 LocalDate  localDate4 = localDate.plusDays(1); // 2023-07-18
 //日期减一 
 LocalDate  localDate4 = localDate.minusDays(1); // 2023-07-16
 // 是否是闰年
 boolean isLeapYear = localDate.isLeapYear(); //false
 // 判断该年是356还是366天
 int value = localDate.lengthOfYear(); //365
 // 当月天数
 LocalDate localDate5 = LocalDate.now();
 int monthDaySum = localDate5.lengthOfMonth(); //31
 // 比较日期大小,返回正数,那么当前的对象时间较晚(数字较大).返回0相等
 LocalDate localDate6 = LocalDate.now(); 
 LocalDate localDate7 = LocalDate.now();
 int value2 = localDate6.compareTo(localDate7); // 0
 

plusDays()增加,当值为负数也可以减少。minusDays()减少,当值为负数也可以增加

四、DateTimeFormatter 格式化与格式转换

LocalDateTime转字符串、自定义时间

 LocalDateTime localDateTime = LocalDateTime.now(); // 2023-07-17T15:14:16.697
 localDate = localDateTime.toLocalDate();
 localTime = localDateTime.toLocalTime();
 //JDK8 新推出的
 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 转字符串 两种方式相互都可以
 String localDateTime1 = localDateTime.format(dtf) // 2023-07-17 15:14:16
 String localDateTime2 = dtf.format(localDateTime); // 2023-07-17 15:14:16
//自定义时间
 LocalDateTime localDateTime1 = LocalDateTime.parse("2023-07-07 00:00:00", dtf);

五、总结

写完一篇文章其实就可以发现,大多数的时间修改对比都是差不多的。我觉得主要就是要了解一些比较特殊。其他的其实知道一个之后。另一个时间类也可以直接出来。毕竟IEDA提示功能也会给我们一些提示的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值