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日

相关文章

  • Java的Struts框架报错“BaseRuntimeException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“BaseRuntimeException”错误。这个错误通常由以下原因之一起: 配置错误:如果配置文件中没有正确配置,则可能会出现此错误。在这种情况下,需要检查文件以解决此问题。 类错误:如果类不正确,则可能会出现此错误。在这种情况下,需要检查类以解决此问题。 以下是两个实例: 例 1 如果配置文件中没有正确配…

    Java 2023年5月5日
    00
  • java 判断两个对象是否为同一个对象实例代码

    判断两个对象是否为同一个对象实例,在Java中可以通过以下两种方式实现: 方法一:使用“==”运算符 在Java中,“==”运算符用于比较两个对象的内存地址是否相等,如果相等,则说明这两个对象是同一个实例,反之则不是。因此,我们可以使用该运算符判断是否两个对象是同一个实例。 下面是示例代码: public class ObjectDemo { public …

    Java 2023年5月26日
    00
  • java Springboot实现教务管理系统

    下面我将结合一些简单示例,分享一下实现Java Spring Boot教务管理系统的完整攻略。 概述 Java Spring Boot是一个快速开发框架,它可以让我们轻松创建RESTful API应用。教务管理系统是一种基于Web技术的应用程序,可以用于学校的教务管理。Java Spring Boot可以用于构建教务管理系统的后端。 教务管理系统的主要功能包…

    Java 2023年5月19日
    00
  • 深入解析Java中的JDBC事务

    深入解析Java中的JDBC事务 什么是JDBC事务 JDBC事务是指,在Java程序中通过JDBC访问数据库时,由一组操作组成的逻辑单元。这些操作被当做一个整体,要么全部执行成功,要么全部回滚(撤销)。JDBC事务是为了保证操作的原子性、一致性、隔离性和持久性而存在的。 原子性 JDBC事务的原子性指,一个事务中所有的SQL语句要么全部执行成功,要么全部失…

    Java 2023年5月20日
    00
  • Java中的Web MVC简介_动力节点Java学院整理

    Java中的Web MVC简介 Web MVC 是一种基于模型-视图-控制器(MVC)模式的 Web 应用程序开发框架。在 Java 中,我们可以使用多种 Web MVC 框架,例如 Spring MVC、Struts2 等。本文将详细讲解 Java 中的 Web MVC,包括 MVC 模式的基本概念、Web MVC 框架的基本原理、Spring MVC 的…

    Java 2023年5月18日
    00
  • mybatis实现获取入参是List和Map的取值

    对于MyBatis,我们可以通过Mapper接口的方法的入参类型来传递参数。如果我们需要传递List或者Map类型的参数,该如何处理呢?下面我们来一一讲解。 传递List类型的参数 当我们需要将一个List类型的参数传递给Mapper接口的方法时,我们可以采用@Param注解的方式将参数进行命名,如下所示: public interface UserMapp…

    Java 2023年5月20日
    00
  • Spring Boot集成 Spring Boot Admin 监控

    首先需要说明的是 SpringBootAdmin 是一个监控和管理 SpringBoot 应用程序的开源项目。它集成了很多常用的监控功能,并提供了可视化界面,方便开发者监控和管理自己的应用程序。 下面我们来详细讲解 SpringBoot 集成 SpringBootAdmin 的完整攻略。 1. 引入依赖 在 pom.xml 中加入 SpringBootAdm…

    Java 2023年5月15日
    00
  • Java使用junit框架进行代码测试过程详解

    Java使用junit框架进行代码测试过程详解 什么是junit框架 junit框架是Java语言的一种单元测试框架。它提供了一种便捷的方式来测试Java程序代码是否符合预期。使用junit框架,开发人员可以编写一些测试用例来验证程序代码的正确性和可靠性,从而提高软件的质量、可维护性和可扩展性。 如何使用junit框架进行代码测试 使用junit框架进行代码…

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