Java8中的LocalDateTime和Date一些时间操作方法

下面我就来详细讲解一下“Java8中的LocalDateTime和Date一些时间操作方法”的完整攻略。

Java8中的LocalDateTime和Date一些时间操作方法

1. LocalDateTime

在Java8中,java.time.LocalDateTime类代表了日期和时间的组合,不带时区信息,并且时间精确到纳秒级别。同时,该类也提供了一些时间的操作方法,其常用的时间操作方法包括:

1.1 时间格式化

使用DateTimeFormatter类可以将LocalDateTime格式化为熟悉的字符串格式,或者将字符串格式转换为LocalDateTime对象。例如:

LocalDateTime currentDateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
String formattedDateTime = currentDateTime.format(formatter);
System.out.println(formattedDateTime); // 输出格式化后的当前时间

String str = "2021年10月01日 10:10:10";
LocalDateTime parsedDateTime = LocalDateTime.parse(str, formatter);
System.out.println(parsedDateTime); // 输出解析后的LocalDateTime对象

1.2 时间比较

使用compareTo()方法可以比较两个LocalDateTime对象的大小,该方法结合了日期和时间的比较。

LocalDateTime currentDateTime = LocalDateTime.now();
LocalDateTime targetDateTime = LocalDateTime.parse("2021-01-01T00:00:00");
if(currentDateTime.compareTo(targetDateTime) > 0) {
    System.out.println("当前时间晚于目标时间");
} else if(currentDateTime.compareTo(targetDateTime) < 0){
    System.out.println("当前时间早于目标时间");
} else {
    System.out.println("当前时间等于目标时间");
}

1.3 时间偏移

使用plusminus方法可以将LocalDateTime对象进行相加或相减,得到新的LocalDateTime对象。

LocalDateTime currentDateTime = LocalDateTime.now();
LocalDateTime nextDayDateTime = currentDateTime.plusDays(1);
System.out.println(nextDayDateTime); // 输出明天的同一时间点的LocalDateTime对象

2. Date

除了LocalDateTime,Java8中依然保留了java.util.Date类,该类同样提供了一些常用的时间操作方法。

2.1 时间格式化

与LocalDateTime相似,使用SimpleDateFormat类可以将Date格式化为熟悉的字符串格式,或者将字符串格式转换为Date对象。例如:

Date currentDate = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String formattedDate = formatter.format(currentDate);
System.out.println(formattedDate); // 输出格式化后的当前时间

String str = "2021年10月01日 10:10:10";
Date parsedDate = formatter.parse(str);
System.out.println(parsedDate); // 输出解析后的Date对象

2.2 时间比较

使用compareTo()方法仍然可以比较两个Date对象的大小,但是在Java8中,推荐使用Instant类进行比较。

Date currentDate = new Date();
Date targetDate = new Date(121, 0, 1);
if(currentDate.compareTo(targetDate) > 0) {
    System.out.println("当前时间晚于目标时间");
} else if(currentDate.compareTo(targetDate) < 0){
    System.out.println("当前时间早于目标时间");
} else {
    System.out.println("当前时间等于目标时间");
}

Instant currentInstant = currentDate.toInstant();
Instant targetInstant = targetDate.toInstant();
if(currentInstant.isAfter(targetInstant)) {
    System.out.println("当前时间晚于目标时间");
} else if(currentInstant.isBefore(targetInstant)){
    System.out.println("当前时间早于目标时间");
} else {
    System.out.println("当前时间等于目标时间");
}

2.3 时间偏移

与LocalDateTime相似,使用Date.getTime()方法和Date.setTime()方法可以实现Date对象的时间偏移。

Date currentDate = new Date();
Date nextDayDate = new Date(currentDate.getTime() + 24 * 60 * 60 * 1000);
System.out.println(nextDayDate); // 输出明天的同一时间点的Date对象

示例

下面给出一个完整的示例,使用Java8中的LocalDateTime和Date类对比实现获取当前时间,输出昨天和明天的同一时间点,以及将时间格式化为2022-01-01 01:01:01的格式。

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.text.SimpleDateFormat;

public class DateTimeDemo {
    public static void main(String[] args) {
        // 当前时间
        LocalDateTime currentLocalDateTime = LocalDateTime.now();
        System.out.println("当前时间:" + currentLocalDateTime);

        Date currentDate = new Date();
        System.out.println("当前时间:" + currentDate);

        // 昨天同一时间点
        LocalDateTime yesterdayLocalDateTime = currentLocalDateTime.minusDays(1);
        System.out.println("昨天同一时间点(LocalDateTime):" + yesterdayLocalDateTime);

        Date yesterdayDate = new Date(currentDate.getTime() - 24 * 60 * 60 * 1000);
        System.out.println("昨天同一时间点(Date):" + yesterdayDate);

        // 明天同一时间点
        LocalDateTime tomorrowLocalDateTime = currentLocalDateTime.plusDays(1);
        System.out.println("明天同一时间点(LocalDateTime):" + tomorrowLocalDateTime);

        Date tomorrowDate = new Date(currentDate.getTime() + 24 * 60 * 60 * 1000);
        System.out.println("明天同一时间点(Date):" + tomorrowDate);

        // 时间格式化为2022-01-01 01:01:01
        DateTimeFormatter localDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String localDateTimeFormattedString = currentLocalDateTime.format(localDateTimeFormatter);
        System.out.println("LocalDateTime格式化后的字符串:" + localDateTimeFormattedString);

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateFormattedString = dateFormat.format(currentDate);
        System.out.println("Date格式化后的字符串:" + dateFormattedString);
    }
}

输出结果:

当前时间:2021-10-01T23:58:24.738394800
当前时间:Sat Oct 02 08:58:25 CST 2021
昨天同一时间点(LocalDateTime):2021-09-30T23:58:24.738394800
昨天同一时间点(Date):Fri Oct 01 23:58:24 CST 2021
明天同一时间点(LocalDateTime):2021-10-02T23:58:24.738394800
明天同一时间点(Date):Sun Oct 03 23:58:24 CST 2021
LocalDateTime格式化后的字符串:2021-10-01 23:58:24
Date格式化后的字符串:2021-10-01 23:58:24

以上就是Java8中的LocalDateTime和Date一些时间操作方法的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java8中的LocalDateTime和Date一些时间操作方法 - Python技术站

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

相关文章

  • Java实现局域网IP地址扫描

    下面我将详细讲解 Java 实现局域网 IP 地址扫描的完整攻略。这里将会分为以下几个步骤: 获取本机的 IP 地址 用正则表达式获取 IP 地址前缀 遍历 IP 地址前缀下的所有 IP 地址 发送 ICMP 包测试 IP 地址是否存活 下面分别进行讲解。 获取本机的 IP 地址 在 Java 中,我们可以通过调用 InetAddress.getLocalH…

    Java 2023年5月26日
    00
  • Web服务器识别技术揭秘

    Web服务器识别技术揭秘 什么是Web服务器识别技术? Web服务器识别技术是指通过检测HTTP请求中的特定标识,以确定正在运行的Web服务器软件类型和版本的过程。Web服务器指向内部资源并与客户端通信,因此了解服务器是非常重要的。许多黑客使用Web服务器识别来收集有关特定网站的有用信息,这些信息可以用于攻击。 Web服务器识别的原理 Web服务器识别的方法…

    Java 2023年6月16日
    00
  • spring定时任务执行两次及tomcat部署缓慢问题的解决方法

    题目分析: 本题要求你详细讲解 Spring 定时任务执行两次的解决方法,以及 Tomcat 部署缓慢的解决方法,并且需要给出至少 2 个示例。本题涉及到 Spring 定时任务、Tomcat 部署、缓慢问题、解决方法等多个方面,需要你掌握相关的知识点和技术,才能详细讲解解决方法的完整攻略。 正文: 一、Spring 定时任务执行两次的解决方法 1、问题描述…

    Java 2023年5月19日
    00
  • Java 实战项目之家政服务平台系统的实现流程

    针对Java实战项目之家政服务平台系统的实现流程的完整攻略,我将从以下几个方面进行详细讲解。 1. 系统需求分析 在开始编写代码之前,需要首先进行系统需求分析,这是开发一个应用程序不可或缺的一步。因为需求分析能够为开发人员提供一个设计的蓝图。 在这一步中,需要明确业务流程和产品模块,例如:用户注册、用户登录、订单管理、评价管理等。 2. 数据库设计 在完成需…

    Java 2023年5月24日
    00
  • PHPWind论坛核心设置详细说明【config.php】

    PHPWind是一款基于PHP开发的论坛系统。在PHPWind中,config.php文件是非常关键的一个配置文件,它包含了论坛系统的核心设置。以下是关于PHPWind论坛核心设置详细说明【config.php】的完整攻略。 config.php文件位置 在PHPWind系统中,config.php文件位于/htdocs/config/目录下,是一个PHP文…

    Java 2023年6月16日
    00
  • 利用Maven入手Spring Boot第一个程序详解

    利用 Maven 入手 Spring Boot 第一个程序的攻略,可以分为以下几个步骤: 步骤一:创建项目 打开 IntelliJ IDEA 软件,选择 “New Project”。 选择 “Spring Initializr” 选项,然后点击 “Next”。 在 “Project SDK” 下拉框中选择相应的 JDK 版本,然后点击 “Next”。 输入项…

    Java 2023年5月20日
    00
  • Java Stream常见用法汇总,开发效率大幅提升

    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址 如果访问不了Github,可以访问gitee地址。 gitee地址 Java8 新增的 St…

    Java 2023年4月17日
    00
  • Java如何判断整数溢出,溢出后怎么得到提示

    Java中整数类型(int, long等)变量的范围是有限的,当一个变量的数值超出了它的范围时,就会发生整数溢出。溢出的结果与数值运算的结果不同,可能导致程序运行异常,所以我们需要在程序中判断整数是否溢出,并得到提示以确保程序的正确性。 判断整数溢出的方法是通过与最值的比较来实现的。以int类型的整数为例,最大值为2^31-1(即2147483647),最小…

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