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

这篇具有很好参考价值的文章主要介绍了Java中LocalDate、LocalTime、LocalDateTime时间类介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

        一、三者的介绍

        二、实例化

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 %<tT%n",ldt);

运行结果:

localdatetime,java,开发语言

 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 %<tT%n",ldt);

运行结果:

localdatetime,java,开发语言

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 %<tT%n",ldt);

运行结果:

localdatetime,java,开发语言

        如果接收到的格式是其他方式那么我们就要利用日期格式化工具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 %<tT%n",ldt);

  运行结果:

localdatetime,java,开发语言

        三、常用方法介绍

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));

运行结果:

 localdatetime,java,开发语言

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));

运行结果:

localdatetime,java,开发语言

        新版的日期类是很强大的,获取单个值的方法不止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 %<tT%n",now);
//加五年
now = now.plus(5, ChronoUnit.YEARS);
System.out.printf("加五年后的时间:%tF %<tT%n",now);
//加两年
now = now.plus(2, ChronoUnit.MONTHS);
System.out.printf("又加两小时的时间:%tF %<tT%n",now);
//加十天
now = now.plus(10, ChronoUnit.DAYS);
System.out.printf("又加十天的时间:%tF %<tT%n",now);
//加六小时
now = now.plus(6, ChronoUnit.HOURS);
System.out.printf("又加6小时的时间:%tF %<tT%n",now);
//加三十分钟
now = now.plus(30, ChronoUnit.MINUTES);
System.out.printf("又加30分钟的时间:%tF %<tT%n",now);
//加20秒
now = now.plus(20, ChronoUnit.SECONDS);
System.out.printf("又加20秒的时间:%tF %<tT%n",now);

运行结果:

localdatetime,java,开发语言

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);

运行结果:

localdatetime,java,开发语言

5、获取时间戳

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

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

 运行结果:

localdatetime,java,开发语言

6、判断是否为闰年

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

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

 运行结果:

  localdatetime,java,开发语言文章来源地址https://www.toymoban.com/news/detail-716658.html

到了这里,关于Java中LocalDate、LocalTime、LocalDateTime时间类介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LocalDate、LocalDateTime计算时间差

    LocalDateTime计算天数和时间差 以下是Jdk1.7存在的问题以及Jdk1.8新特性 Jdk1.7的问题   在Jdk1.8版本发布了新的Date-Time API来加强对时间、日期的处理。这是因为在Jdk1.7中时间、日期的处理上存在如下的一些问题。 非线程安全。Date类是非线程安全的,这是Java时间日期类中最大的

    2023年04月15日
    浏览(29)
  • JAVA8新特性(Stream API,LocalDate,LocalDateTime)

    一. Stream API 1.1 基础 代码参数准备: 场景一:知道一个ListUser对象,如何获取ListUser的所有用户id? 场景二:知道一个ListUser对象,如何获取ListUser中年龄大于50的用户? 场景三:知道一个ListUser对象,如何按照年龄从小到小排序,从大到小排序? 场景四:知道一个ListUser对象

    2024年02月16日
    浏览(38)
  • Java String、Date、Calendar、LocalDate和LocalDateTime互转

    目录 一、String和Date互转 1.1 String时间转为Date 1.2 Date转为String 二、String和Calendar互转 2.1 String时间转为Calendar 2.2 Calendar转为String 三、String和LocalDate(LocalDateTime)互转 3.1 String时间转为LocalDate(LocalDateTime) 3.2 LocalDate(LocalDateTime)转为String 四、Date和Calendar互转 4.1 Date转为Calen

    2024年02月06日
    浏览(39)
  • LocalDateTime、LocalDate与Date互转

            LocalDateTime、LocalDate是JDK1.8提供的新的时间操作接口,而Date是JDK1.0提供的时间操作接口,LocalDateTime/LocalDate提供许多便捷的时间操作函数,使用起来相当方便,在实际的编程中经常会用到这几个类,有时候难免会存在相互转换的情况,本文将使用代码讲解具体的转

    2024年02月11日
    浏览(34)
  • 【Java LocalDateTime】LocalDateTime获取时间信息、格式化、转换为数字时间戳

    文章目录 正文         一、描述         二、基本使用 1、获取LocalDateTime时间 2、时间比较 3、获取基本时间信息: 4、格式化 / 反格式化 5、转换为数字时间戳 6、数字时间戳转为LocalDateTime         LocalDateTime是Java 8引入的日期和时间API (java.time包)中的一个类, 不包含

    2024年02月03日
    浏览(35)
  • LocalDateTime、LocalDate、Date、String相互转化大全及其注意事项

    大家在开发过程中必不可少的和日期打交道,对接别的系统时,时间日期格式不一致,每次都要转化! 每次写完就忘记了,小编专门来整理一篇来详细说一下他们四个的转换的方法,方便后面使用!! 这里先说一下,为什么日期有 Date 了,还在 JDK8 中推出了 LocalDateTime、Lo

    2024年02月08日
    浏览(39)
  • java中Date、LocalDate、LocalTime、时间戳的相互转化和基本使用方法

    目录 1、Date 1、Date格式化工具——SimpleDateFormate用于时间的格式化 2、SimpleDateFormate中的常用方法 2、LocalDate与LocalTime  1、LocalDate的常用方法 2、LocalTime的创建、构造 3、LocalDate、LocalTime格式化工具——DateTimeFormatter 4、parse()与format() 3、calendar 4、时间戳 1、时间戳转换为自定义格

    2024年02月03日
    浏览(35)
  • Spring Boot 别再用 Date 作为入参了,LocalDateTime、LocalDate 真香!

    作者:TinyThing 链接:https://www.jianshu.com/p/b52db905f020 项目中使用LocalDateTime系列作为dto中时间的类型,但是spring收到参数后总报错,为了全局配置时间类型转换,尝试了如下3中方法。 注:本文基于Springboot2.0测试,如果无法生效可能是spring版本较低导致的。PS:如果你的Controll

    2024年02月11日
    浏览(31)
  • Java8日期时间类LocalDateTime格式化

    LocalDateTime日期时间格式化 LocalDateTime localDateTime = LocalDateTime.now() System.out.println(now.format( DateTimeFormatter.ofPattern(\\\"yyyy-MM-dd HH:mm:ss\\\") )); 测试1 测试2 测试2的结果

    2024年02月08日
    浏览(37)
  • Java中Date、Calendar、LocalDateTime时间戳转换日期

    时间戳是指格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒 ( 北京时间 1970 年 01 月 01 日 08 时 00 分 00 秒 ) 起至现在的总毫秒数,本质是一个long 类型的整数,表示日期对象。 以下时Java中Date、Calendar、LocalDateTime与时间戳转换日期 Date类时间戳转换日期: Calendar类时间戳转换日

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包