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日

相关文章

  • 浅谈Java面向接口编程

    让我来详细讲解“浅谈Java面向接口编程”的攻略。 什么是Java面向接口编程 Java面向接口编程是指在编写Java程序时,通过定义接口,限制具体实现类的行为,从而降低程序的耦合性和提高代码的可维护性。 在Java中,接口是一种抽象的定义,它定义了一组方法或属性的规范,但并不提供实现,而实现接口的类则必须实现接口中定义的所有方法。 面向接口编程,充分利用了…

    Java 2023年5月23日
    00
  • Servlet+Ajax实现智能搜索框智能提示功能

    下面是“Servlet+Ajax实现智能搜索框智能提示功能”的完整攻略: 一、准备工作 创建一个Web工程 导入jQuery库和Bootstrap库(可选) 二、实现简单的搜索框 通过HTML标签实现一个简单的搜索框,例如: <input type="text" id="searchInput" name=&qu…

    Java 2023年6月15日
    00
  • Java中Mybatis分页查询的四种传参方式

    前言 在使用 Mybatis 进行分页查询时,我们需要传递分页参数给 Mybatis,以告知查询的起始位置和数量。这篇文章将会详细介绍 Java 中 Mybatis 分页查询的四种传参方式。 前置条件 在介绍 Mybatis 分页查询的传参方式之前,需要先完成如下准备工作: 导入 Mybatis 和 Mybatis-spring 的 jar 包 编写 Myb…

    Java 2023年5月20日
    00
  • Servlet实现简单的用户登录功能实例代码

    下面我就为你介绍一下如何用Servlet实现简单的用户登录功能实例代码的攻略。 一、创建JavaWeb工程 首先,我们需要创建一个JavaWeb工程。你可以选择Eclipse或者Intellij IDEA等开发工具来创建新的JavaWeb工程。并在项目中添加相关的Servlet包。 二、创建登录页面 在Web应用程序中添加一个HTML页面作为登录页面(log…

    Java 2023年6月15日
    00
  • IDEA 如何导入别人的javaweb项目进行部署

    下面是在 IDEA 中导入别人的 JavaWeb 项目并进行部署的详细攻略: 步骤1:下载并安装 IDEA 如果您还没有安装 IDEA,可以到 IntelliJ IDEA 官网下载对应版本并安装。安装过程中请按照提示一步一步操作即可。 步骤2:下载并解压缩 JavaWeb 项目 假设您已经获得了别人的 JavaWeb 项目源代码,接下来需要将其解压缩到本地。…

    Java 2023年6月2日
    00
  • JAVA构造函数(方法)示例详解

    JAVA构造函数(方法)示例详解 什么是构造函数? 在Java中,构造函数是一种特殊类型的方法,它用于初始化对象的重要成员变量。构造函数的名称必须与类名相同,因此在创建新对象时,它们会被自动调用。可以使用构造函数来设置类的成员变量的初值、分配内存空间、初始化对象等。Java中可以创建一个以上的构造函数,它们可以有不同的参数列表,但它们的名称必须与类名相同。 …

    Java 2023年5月23日
    00
  • Java参数传递及值传递实现原理详解

    Java参数传递及值传递实现原理详解 Java中的参数传递涉及到两个概念:引用传递和值传递。本文将详细讲解Java参数传递及值传递的实现原理。 引用传递 引用传递是指将实参的地址作为形参传递。在Java中,在方法调用时,如果参数是对象类型,那么实参传递给形参的是对象地址的副本。也就是说,实参和形参指向同一块内存地址。 示例: public class Per…

    Java 2023年5月26日
    00
  • JAVA数字千分位和小数点的现实代码(处理金额问题)

    下面是详细讲解JAVA数字千分位和小数点的实现方法,以及如何处理金额问题的完整攻略。 1. 实现方法 在Java中,可以利用DecimalFormat类来实现数字格式化,包括数字千分位的显示和小数点位数的控制。 1.1 数字千分位显示 利用DecimalFormat的实例化对象,设置数字千分位分隔符,例如: DecimalFormat df = new De…

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