文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中LocalDate、LocalTime、LocalDateTime时间类介绍

2023-09-21 19:40

关注

目录

        一、三者的介绍

        二、实例化

1、普通实例化

 2、实例化并设置日期: 

3、利用格式化工具实例化并将日期字符串设置为日期

        三、常用方法介绍

1、获取星期几

2、获取月份

3、对年月日时分秒进行加减

4、计算两个日期之间的天数

5、获取时间戳

6、判断是否为闰年


        一、三者的介绍

        这三个类均在“java.time”包下,依次导包写法“import java.time.LocalDate;import java.time.LocalTime;import java.time.LocalDateTime;”。如果三个包均要使用的话可以用import java.time.*;代替以上三个进行导包。

        三者的不同点是LocalDate只能使用年月日;LocalTime只能使用时分秒;LocalDateTime可以使用年月日时分秒。我们在使用的时候可以根据自己的需求进行选择。

        二、实例化

1、普通实例化

        三者在进行实列化的时候都不是通过new的方法进行实例化,而是通过now()方法来获取当前时间的对象。例如:

//分别进行实例化LocalDate ld = LocalDate.now();LocalTime lt = LocalTime.now();LocalDateTime ldt = LocalDateTime.now();//依次格式化输出System.out.printf("%tF%n",ld);System.out.printf("%tT%n",lt);System.out.printf("%tF %

运行结果:

 2、实例化并设置日期: 

        我们可以使用of()方法来进行声名我们想要的事件对象;在指定时间的时候不用像Date日期类一样年份需要减去1900,也不用像Calendar日期类一样月份需要减去1。因为新的日期类已经很完善了在使用的时候不需要我们去进行计算,直接使用即可。

//分别进行实例化LocalDate ld = LocalDate.of(2020,4,5);LocalTime lt = LocalTime.of(14,59,59);LocalDateTime ldt = LocalDateTime.of(2020,4,5,14,59,59);//依次格式化输出System.out.printf("%tF%n",ld);System.out.printf("%tT%n",lt);System.out.printf("%tF %

运行结果:

3、利用格式化工具实例化并将日期字符串设置为日期

        在实际使用的时候我们接收到的日期的参数往往是输入的字符串,而默认的字符串实例化格式只有一种那就是按照“2020-02-05T14:59:59”格式进行传入。值得注意的时我举得例子为LocDateTime类传入参数的,在年月日时分秒中年必须是四位、其余必须是两位不然不能正确解析,在年月日和时分秒之间必须用“T”来进行分隔开不然也会造成解析错误。在LocalDate和LocalTime使用时只需传入所需部分即可。

//按特定格式传入字符串进行时间设置并实例化LocalDate ld = LocalDate.parse("2020-02-05");LocalTime lt = LocalTime.parse("14:59:59");LocalDateTime ldt = LocalDateTime.parse("2020-02-05T14:59:59");//依次格式化输出System.out.printf("%tF%n",ld);System.out.printf("%tT%n",lt);System.out.printf("%tF %

运行结果:

        如果接收到的格式是其他方式那么我们就要利用日期格式化工具DateTimeFormatter将字符串时间实例化,当然我们在实例化对象的时候要严格按照实例化的格式进行日期字符串的传入。下面就是我利用格式化工具规定的一种传入日期字符串的格式,小伙伴们还可以试试其他格式。

//分别设置三个格式化工具DateTimeFormatter ymd = DateTimeFormatter.ofPattern("yyyy年MM月dd日");DateTimeFormatter hms = DateTimeFormatter.ofPattern("HH时mm分ss秒");DateTimeFormatter ymdhms = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");//分别进行实例化LocalDate ld = LocalDate.parse("2000年04月05日",ymd);LocalTime lt = LocalTime.parse("15时59分59秒",hms);LocalDateTime ldt = LocalDateTime.parse("2000年04月05日 15时59分59秒",ymdhms);//依次格式化输出System.out.printf("%tF%n",ld);System.out.printf("%tT%n",lt);System.out.printf("%tF %

  运行结果:

        三、常用方法介绍

1、获取星期几

        因为在日其中就含有天数可以算出星期几,所以就利用LocalDate进行演示:

//获取当前日期LocalDate ld = LocalDate.now();//得到DayOfWeek对象DayOfWeek dayOfWeek = ld.getDayOfWeek();//输出当前星期几的值System.out.println(dayOfWeek.getValue());//第一个参数为长格式,第二个参数为设置输出的地区语言System.out.println(dayOfWeek.getDisplayName(TextStyle.FULL, Locale.CHINA));//短格式输出System.out.println(dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.CHINA));

运行结果:

 

2、获取月份

        同样的利用LocalDate演示:

//获取当前日期LocalDate ld = LocalDate.now();//得到Month对象Month month = ld.getMonth();//返回当前月份的值System.out.println(month.getValue());//第一个参数为长格式,第二个参数为设置输出的地区语言System.out.println(month.getDisplayName(TextStyle.FULL, Locale.CHINA));//短格式输出System.out.println(month.getDisplayName(TextStyle.SHORT, Locale.CHINA));

运行结果:

        新版的日期类是很强大的,获取单个值的方法不止1和2展示的两种,还有很多相似的方法就不在这里一一展示了。

3、对年月日时分秒进行加减

        此方法三个类均可使用,但值得注意的是在使用的时候要明确哪些类包含是什么例如LocalDate类中只有年月日,则不能进行时分秒的加减操作。加的方法为plus(long amountToAdd, TemporalUnit unit),减的方法为minus(long amountToAdd, TemporalUnit unit),其中都有两个参数第一个参数为要减的数值,第二个参数为要减的类型。下面我用LocalDateTime类演示plus(long amountToAdd, TemporalUnit unit)方法(minus(long amountToAdd, TemporalUnit unit)与其使用方式相同,当然也可以使plus(long amountToAdd, TemporalUnit unit)方法加的为负值实现减操作)。

//获取当前日期时间LocalDateTime now = LocalDateTime.now();//格式化输出System.out.printf("当前时间:%tF %

运行结果:

4、计算两个日期之间的天数

        ChronoUnit.DAYS.between(d2,d1),如果我们想计算其它值如两个日期之间相差的年份、相差的月等,我们只需将“DAYS”换为相对应的即可实现。下面是对两个日期之间天数的展示。

LocalDate d1 = LocalDate.of(2023, 6, 12);LocalDate d2 = LocalDate.of(2000, 4, 1);//得到d1和d2之间的天数long days = ChronoUnit.DAYS.between(d2,d1);//格式化输出System.out.printf("%s到%s之间有%d天",d2,d1,days);

运行结果:

5、获取时间戳

        因为LocalDate和localTime中的日期是不完整的,所以我们在计算时间戳的时候只能计算LocalDateTime的时间戳。

LocalDateTime now = LocalDateTime.now();//获取时间戳long l = now.toInstant(ZoneOffset.of("+08:00")).toEpochMilli();System.out.println(l);

 运行结果:

6、判断是否为闰年

        在LocalDate中isLeapYear()方法可以直接用判断该年份是否为闰年,当然该方法LocalDateTime也是可以使用的。

//设置时间LocalDate ld = LocalDate.of(2020,5,24);//判断是否湿闰年System.out.println(ld.isLeapYear());

 运行结果:

  

来源地址:https://blog.csdn.net/LiuQQ567/article/details/131269552

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯