java日期时间操作工具类

Java 日期时间操作工具类

在Java开发中,经常需要进行日期时间的处理和计算。Java提供了DateCalendar两个基础的日期时间类,但它们的使用不方便,比较繁琐。因此,在日常开发中,我们通常会使用一些日期时间操作工具类来简化日期时间的操作。本文将介绍几个比较好用的Java日期时间操作工具类。

1. joda-time

Joda-Time是一款开源的Java日期时间操作类库,提供了很多方便的日期时间操作方法。Joda-Time目前已经停止更新,官网推荐使用Java 8自带的日期时间类库。不过,如果你在Java 8之前进行开发,Joda-Time还是非常好用的一个工具类。

1.1 安装

在使用Joda-Time之前,需要先下载jar包,并加入项目的类路径中。可以到Joda-Time的官网( http://www.joda.org/joda-time/ )进行下载。

1.2 使用

先看一个Joda-Time的示例代码:

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class JodaTimeDemo {
    public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
        DateTime dateTime = DateTime.parse("2022-01-01 12:00:00", formatter);
        System.out.println(dateTime.plusDays(7).toString(formatter));
    }
}

该示例代码通过DateTime.parse方法将一个字符串转化为DateTime类型实例,然后使用plusDays方法对日期进行加减。这里的plusDays方法表示在原有的日期上增加7天。

1.3 示例

再来一个示例,为了方便阅读,将代码分为若干段:

import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.Period;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class JodaTimeDemo {
    public static void main(String[] args) {
        // 创建时间日期格式化对象(以字符串中的"2019-08-01"为模板)
        DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd");
        // 获取当前日期时间对象
        DateTime startDate = DateTime.now();
        // 格式化字符串为日期时间对象,比较日期天数
        DateTime endDate = DateTime.parse("2022-12-31", formatter);
        int days = Days.daysBetween(startDate, endDate).getDays();
        System.out.println("距离2022年元旦还有 " + days + " 天");

        // 获取时间差
        Period period = new Period(startDate, endDate);
        System.out.println("距离2022年元旦还有 " + period.getYears() + " 年 "
                + period.getMonths() + " 个月 " + period.getDays() + " 天 "
                + period.getHours() + " 小时 " + period.getMinutes() + " 分钟 "
                + period.getSeconds() + " 秒");

        // 时间日期加减
        DateTime dateTime = DateTime.parse("2022-01-01", formatter);
        // 加上90天
        DateTime result1 = dateTime.plusDays(90);
        // 减去60天
        DateTime result2 = dateTime.minusDays(60);
        System.out.println("2022年1月1日加上90天等于:" + result1.toString(formatter));
        System.out.println("2022年1月1日减去60天等于:" + result2.toString(formatter));
    }
}

此示例代码主要介绍了:日期天数计算、时间差计算、时间日期加减三个方面。其中,Days.daysBetween方法用于计算两个日期之间的天数差,Period类可以计算两个日期之间的年/月/日/时/分/秒差,plusDays方法和minusDays方法用于对时间日期进行加减。

2. java.time

Java 8引入了一套全新的日期时间库:java.time,它包含了一组用于表示和操作日期时间的类。在新的日期时间库中,类的命名和API设计都经过了优化和改进,使得Java日期时间操作更加简洁和易用。

2.1 使用

Java 8的日期时间类库非常好用,常用的就是LocalDate、LocalTime、LocalDateTime和ZonedDateTime这些类。下面从创建日期时间、日期时间格式化、日期时间计算三个方面介绍Java 8的日期时间相关API。

2.1.1 创建日期时间

LocalDate today = LocalDate.now(); //获取当前日期
LocalDate birthDate = LocalDate.of(1990, 1, 1); //通过年月日创建对象

2.1.2 日期时间格式化

Java 8的日期时间类库也提供了非常方便的日期时间格式化帮助类,借助这个帮助类可以方便地完成日期时间格式化的操作:

// DateTimeFormatter类的ofPattern方法,通过模板创建格式化对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
String formattedDateTime = now.format(formatter);
System.out.println("格式化日期时间:" + formattedDateTime);

2.1.3 日期时间计算

Java 8提供了便于日期时间计算的API,以下是一些使用示例:

LocalDateTime now = LocalDateTime.now(); //获取当前日期时间
LocalDate today = LocalDate.now(); //获取当前日期
LocalTime nowTime = LocalTime.now(); //获取当前时间
LocalDateTime newDateTime = now.plusDays(1).plusHours(2); //加上一天两小时
LocalDate newDate = today.plusDays(7); //加上7天
LocalDateTime minusDateTime = now.minusDays(1).minusHours(2); //减去一天两小时
LocalDate minusDate = today.minusDays(7); //减去7天

2.2 示例

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Period;
import java.time.format.DateTimeFormatter;

public class JavaTimeDemo {
    public static void main(String[] args) {
        // 日期时间格式化
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime now = LocalDateTime.now();
        String formattedDateTime = now.format(formatter);
        System.out.println("格式化日期时间:" + formattedDateTime);

        // 日期时间计算
        LocalDate today = LocalDate.now(); //获取当前日期
        LocalDate birthDate = LocalDate.of(1990, 1, 1); //通过年月日创建对象
        Period period = Period.between(birthDate, today); //计算时间差
        System.out.printf("距离1990年1月1日已经过去了 %d 年 %d 个月 %d 天\n", period.getYears(), period.getMonths(), period.getDays());

        LocalDateTime newDateTime = now.plusDays(1).plusHours(2); //加上一天两小时
        LocalDate newDate = today.plusDays(7); //加上7天
        LocalDateTime minusDateTime = now.minusDays(1).minusHours(2); //减去一天两小时
        LocalDate minusDate = today.minusDays(7); //减去7天
    }
}

3. 总结

本文介绍了两种Java日期时间操作工具类:joda-time和java.time。它们都是比较常用的Java日期时间操作工具类,在开发中非常方便实用。其中,joda-time在Java 8之前比较流行,而java.time则是Java 8中新增的一套日期时间API。两种工具类都提供了比较好用的日期时间计算和格式化方法,可以根据需要选择适用的日期时间工具类。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java日期时间操作工具类 - Python技术站

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

相关文章

  • SSM项目频繁打成war包部署,使用tomcat和maven实现热部署配置

    下面是SSM项目频繁打成war包部署并使用tomcat和maven实现热部署配置的完整攻略。 1. 前置条件 在开始之前,确保以下条件已满足: 项目使用maven进行构建 tomcat服务器已正确安装并运行 项目使用spring、spring mvc、mybatis等框架 2. 配置pom.xml文件 在项目的pom.xml文件中添加以下依赖: <de…

    Java 2023年5月19日
    00
  • jsp获得本地及serverIP的简单方法

    关于获取本地及server IP的方法,我们可以采用Java Web应用中的Java Server Pages(JSP)进行实现。 以下是获取本地IP地址的步骤: 在JSP页面中引入Java的网络类库。 <%@ page import="java.net.*"%> 使用该类库的 InetAddress 类创建一个实例。 &lt…

    Java 2023年6月15日
    00
  • 详细解读Java的串口编程

    详细解读Java的串口编程 什么是串口 串口是一种计算机外部设备与计算机通信的接口标准,它通过串口线连接计算机和设备,在数据传输时通过线上的电压变化来进行信息传递。 Java中实现串口编程 导入rxtxcomm.jar和win32com.dll两个文件,这两个文件提供了Java访问串口的接口。在导入了这两个文件之后,就可以在Java程序中访问串口了。 使用S…

    Java 2023年5月26日
    00
  • Spring Boot之内嵌tomcat版本升级操作示例

    下面我将详细讲解“Spring Boot之内嵌tomcat版本升级操作示例”的完整攻略。该攻略包含以下步骤: 1. 查看内嵌Tomcat版本 我们首先需要查看当前Spring Boot项目内嵌的Tomcat版本。在pom.xml文件中,可以找到以下代码: <dependency> <groupId>org.springframewor…

    Java 2023年5月19日
    00
  • SpringBoot设置编码UTF-8的两种方法

    当使用SpringBoot进行开发时,经常需要对应用程序的编码进行设置。下面是两种常见的设置编码为UTF-8的方法。 方法一:application.properties配置文件设置 在SpringBoot项目的src/main/resources目录下,有一个名为application.properties(如果使用yml格式,则为application.…

    Java 2023年5月20日
    00
  • JS笛卡尔积算法与多重数组笛卡尔积实现方法示例

    JS笛卡尔积算法用来计算多个数组的所有组合结果,它可以轻松地计算多个数组之间的笛卡尔积。下面是JS笛卡尔积算法的实现过程: 实现过程 首先我们需要创建一个空的结果数组,用于存储所有的组合结果。 然后我们需要用for循环嵌套来遍历所有的数组元素。 在遍历的过程中,我们需要用concat方法将数组元素进行组合,并将组合结果添加到结果数组中。 最后,我们返回结果数…

    Java 2023年5月19日
    00
  • Mac下安装tomcat的教程详解

    Mac下安装Tomcat的教程详解 Tomcat是一个流行的Java Web服务器,它可以运行Java Servlet和JSP应用程序。在Mac上安装Tomcat可以帮助开发人员快速开发Java Web应用程序。本教程将介绍如何在Mac上安装Tomcat,并启动一个简单的Web应用程序。 步骤一:安装Java 在安装Tomcat之前,必须先安装Java。在M…

    Java 2023年5月19日
    00
  • Mybatis如何自动生成数据库表的实体类

    要让Mybatis自动生成数据库表的实体类,需要使用Mybatis Generator这个工具。 下面是使用Mybatis Generator自动生成实体类的详细步骤: 配置generatorConfig.xml文件 在generatorConfig.xml文件中,需要指定要生成的实体类所在的包名、数据库连接信息、要生成的表名等。下面是一个示例配置: &lt…

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