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日

相关文章

  • Windows系统中Java调用cmd命令及执行exe程序的方法

    下面我将为您详细讲解“Windows系统中Java调用cmd命令及执行exe程序的方法”的完整攻略。 1.调用cmd命令 要在Java程序中调用cmd命令,可以使用Java中的Runtime.getRuntime()方法执行系统命令。具体代码如下: Process process = Runtime.getRuntime().exec("cmd /…

    Java 2023年5月23日
    00
  • SpringBoot整合Redis、ApachSolr和SpringSession的示例

    下面是”SpringBoot整合Redis、ApachSolr和SpringSession的示例”的完整攻略,其中包括两个示例。 1. 环境搭建 首先,在我们开始之前,确保你已经正确地安装了Java、Maven、Redis、ApachSolr和SpringBoot。 1.1 安装Redis 可以在Redis官网上,下载并安装最新版的Redis。如果你使用的是…

    Java 2023年5月20日
    00
  • SpringBoot启动原理深入解析

    SpringBoot启动原理深入解析 什么是SpringBoot? SpringBoot是基于Spring框架的一套快速开发框架,采用约定优于配置的思想,目的在于简化Spring应用的创建和开发过程。 SpringBoot启动过程 SpringBoot启动过程涉及到的类和接口有很多,下面对SpringBoot启动过程的核心部分做一个简单的介绍。 Spring…

    Java 2023年5月15日
    00
  • java中aop实现接口访问频率限制

    下面就是“Java中AOP实现接口访问频率限制”的完整攻略,包含以下几个步骤: 1. 添加依赖 首先,在项目中添加以下两个依赖: <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> &l…

    Java 2023年5月20日
    00
  • Spring Boot整合web层实现过程详解

    下面给出详细的“SpringBoot整合web层实现过程详解”: 1. 引入依赖 SpringBoot已经内置了常用的Web框架,如SpringMVC、Spring WebFlux等。因此,我们只需要在pom.xml中引入SpringBoot Web依赖即可。 <dependencies> <!–Web相关依赖–> <dep…

    Java 2023年5月15日
    00
  • 基于jstl 标签的使用介绍

    下面是关于“基于jstl标签的使用介绍”的完整攻略。 什么是JSTL? JSTL(JavaServer Pages标准标签库)是在Java web应用程序中使用的一组标记,是为JSP提供的一组标签,它可以帮助程序员们简化JSP页面的创建和维护流程,是JSP中常用的标签库之一。 JSTL是一组配置简单、参数方便的标记库,是JSP中最重要的标记库之一,但它不是J…

    Java 2023年6月15日
    00
  • 10道springboot常见面试题

    10道Spring Boot常见面试题攻略 Spring Boot是一个基于Spring框架的快速开发框架,它可以帮助我们快速构建Web应用程序。在面试中,Spring Boot是一个非常常见的话题。以下是10道Spring Boot常见面试题的攻略。 1. 什么是Spring Boot? Spring Boot是一个基于Spring框架的快速开发框架,它可…

    Java 2023年5月14日
    00
  • JSP多种web应用服务器导致JSP源码泄漏漏洞

    JSP多种web应用服务器导致JSP源码泄漏漏洞,是一种常见的web应用安全问题。攻击者可以通过获取JSP源代码,了解网站的系统架构、数据库配置、代码逻辑等敏感信息,企图发起更加准确有效的攻击。 攻击者可以通过以下几个步骤来利用“JSP多种web应用服务器导致JSP源码泄漏漏洞”完成渗透攻击: 发现漏洞:攻击者通过各种方式对目标网站进行框架探测,如果目标网站…

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