Java8 LocalDateTime极简时间日期操作小结

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. 加减时间

可以通过plusminus方法对LocalDateTime对象进行加减时间的操作。示例代码如下:

// 增加一天
LocalDateTime plusOneDay = datetime.plusDays(1);

// 减少一小时
LocalDateTime minusOneHour = datetime.minusHours(1);

其中,plusDays方法表示增加days天,minusHours方法表示减少hours小时,同理还有plusMonthsminusMinutes等方法可以使用。

示例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技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 浅析idea生成war包放入tomcat的路径访问问题

    下面是“浅析idea生成war包放入tomcat的路径访问问题”的完整攻略。 1. 生成WAR包 首先在IDEA中生成WAR包,步骤如下: 点击菜单栏中的 “Build” -> “Build Project” 或者使用快捷键 Ctrl + F9。 在 IDEA 底部状态栏查看构建过程是否成功。 在项目工程根目录下的 target 文件夹中找到生成的WA…

    Java 2023年5月19日
    00
  • 详解Tomcat多域名配置(多个项目共用80端口)

    我将为您详细讲解如何实现Tomcat多域名配置,以及多个项目如何共用80端口。 一、前置条件 在进行多域名配置之前,您需要完成以下几个步骤:1. 确认您的服务器上已经安装了Tomcat。2. 确认您的服务器操作系统是Linux。3. 确认您已经有至少一个域名,且该域名已经在DNS服务器中解析。 二、步骤 下面,我们将分步骤介绍如何进行多域名配置: 2.1 配…

    Java 2023年5月20日
    00
  • java去除中文括号小括号,或者英文括号的实例代码

    这里提供两个示例说明: 示例1:去除中文括号和小括号 public static String removeBrackets(String text) { if (text == null) return null; // 中文括号 text = text.replaceAll("[()()]", ""); retur…

    Java 2023年5月26日
    00
  • 利用JAVA反射,读取数据库表名,自动生成对应实体类的操作

    利用JAVA反射,读取数据库表名,自动生成对应实体类的操作可以分为以下几个步骤: 获取数据库中所有的表名 可以通过 JDBC 中的 DatabaseMetaData 类来获取数据库中所有的表名: DatabaseMetaData metaData = connection.getMetaData(); ResultSet tablesResultSet = …

    Java 2023年5月20日
    00
  • Java线程(Thread)四种停止方式代码实例

    Java线程(Thread)四种停止方式代码实例 在Java语言中,线程是非常常见的概念。在多线程编程过程中,需要经常使用到线程的停止操作。Java线程的停止方法有四种,分别是: 调用stop方法停止线程 使用interrupt方法打断线程 使用volatile布尔变量作为停止标志 使用线程阻塞等待退出 下面详细介绍这四种方式的代码实例。 1. 调用stop…

    Java 2023年5月18日
    00
  • Java获取文件的类型和扩展名的实现方法

    获取文件类型和扩展名是Java中经常用到的功能之一。下面将详细讲解Java获取文件类型和扩展名的实现方法。 获取文件扩展名 方法一:使用String类的substring()函数 Java中的String类拥有很多有用的函数,例如substring()函数可以截取一个字符串的一部分。通过substring函数,我们可以将文件名中最后一个点号(.)后面的字符(…

    Java 2023年5月20日
    00
  • java乐观锁原理与实现案例分析

    Java乐观锁原理与实现案例分析 什么是乐观锁? 乐观锁是一种轻量级锁,它假定不会有其它线程修改共享资源,因此,不需要加锁,只要在最后提交时检查是否有其它线程修改了此数据就好了。 如何实现乐观锁? 实现乐观锁的关键是要保证数据提交时的原子性,通常有两种方式来实现: 基于版本号的乐观锁:通过给数据增加一个版本号,每次操作都需要比较版本号是否一致,只有版本号一致…

    Java 2023年5月18日
    00
  • 关于Java的对象序列化流和反序列化流详细解读

    关于Java的对象序列化流和反序列化流详细解读 什么是对象序列化? 在Java中,对象序列化是指将一个对象转换为字节序列的过程,该字节序列可以被存储于磁盘上,或者将其传递到另一个网络节点中。对象序列化主要用于数据持久化或者网络传输。 如何进行对象序列化? Java提供了ObjectOutputStream类,它可以将Java对象转换为字节流。下面是一个对象序…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部