Java8 LocalDateTime极简时间日期操作小结
Java8提供了LocalDateTime
类来处理日期和时间,其提供了丰富的API,可以简化我们的时间日期操作。本文将详细介绍LocalDateTime
的常用API及示例操作。
1. LocalDateTime类
LocalDateTime
类是Java8新增的一个日期时间类,表示不带时区的日期时间,类似于Java 1.1中的Date
类。它由日期和时间组成,可以精确到微秒级别。常用的构造方法有:
// 使用当前时间创建LocalDateTime对象
LocalDateTime now = LocalDateTime.now();
// 使用指定的日期和时间创建LocalDateTime对象
LocalDateTime datetime = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nano);
其中,year
表示年份,month
表示月份,可使用标准月份枚举类(如Month.JANUARY
表示1月),dayOfMonth
表示当月的日期,hour
表示小时数,minute
表示分钟数,second
表示秒数,nano
表示纳秒数。
2. 格式化输出
将LocalDateTime
对象格式化输出为字符串,可以使用DateTimeFormatter
类。以下是几个常用的格式化代码:
// 日期时间格式化
DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String strDate1 = datetime.format(dtf1);
// 日期格式化
DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String strDate2 = datetime.format(dtf2);
// 时间格式化
DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern("HH:mm:ss");
String strDate3 = datetime.format(dtf3);
其中,ofPattern
方法的参数为格式化字符串,其中y
表示年份,M
表示月份,d
表示当月的日期,H
表示小时数(24小时制),m
表示分钟数,s
表示秒数。格式化字符串可以自定义,如yyyy/MM/dd HH:mm:ss
等。
3. 转换为时间戳
将LocalDateTime
对象转换为时间戳,可以使用Instant
类的toEpochMilli
方法。示例代码如下:
// 将LocalDateTime对象转换为时间戳
Instant instant = datetime.atZone(ZoneId.systemDefault()).toInstant();
long millis = instant.toEpochMilli();
其中,atZone
方法将LocalDateTime
转换为带时区的ZonedDateTime
对象,再使用toInstant
方法将其转换为Instant
对象,最后使用toEpochMilli
方法将其转换为时间戳。
4. 加减时间
可以通过plus
和minus
方法对LocalDateTime
对象进行加减时间的操作。示例代码如下:
// 增加一天
LocalDateTime plusOneDay = datetime.plusDays(1);
// 减少一小时
LocalDateTime minusOneHour = datetime.minusHours(1);
其中,plusDays
方法表示增加days
天,minusHours
方法表示减少hours
小时,同理还有plusMonths
、minusMinutes
等方法可以使用。
示例1:计算某个日期距离现在还剩几天
LocalDateTime today = LocalDateTime.now();
LocalDateTime futureDate = LocalDateTime.of(2022, Month.MAY, 1, 0, 0, 0);
long days = ChronoUnit.DAYS.between(today, futureDate);
System.out.println("距离" + futureDate + "还有" + days + "天");
首先获取当前时间today
,然后使用of
方法创建一个未来某个日期的LocalDateTime
对象futureDate
,使用ChronoUnit.DAYS.between
方法计算两个日期之间相差的天数。
输出结果为:
距离2022-05-01T00:00还有281天
示例2:格式化输出日期时间
LocalDateTime datetime = LocalDateTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
String strDate = datetime.format(dtf);
System.out.println(strDate);
首先获取当前时间datetime
,然后使用DateTimeFormatter
将其格式化为指定的字符串格式。
输出结果为:
2021/08/14 20:05:47
总结
本文详细介绍了Java8中LocalDateTime
的常用API及示例操作。通过使用LocalDateTime
,我们可以轻松实现日期时间的各种操作,大大简化了时间日期处理的编程难度。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java8 LocalDateTime极简时间日期操作小结 - Python技术站