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日

相关文章

  • Spring5学习之基础知识总结

    标题 Spring5 学习之基础知识总结 简介Spring 是一个轻量级的、开源的框架,目的是简化 Java 开发。它处理了应用程序的基础设施,使开发人员可以专注于业务逻辑。在本文中,将会总结 Spring5 的基础知识,包括如何创建 Spring 应用程序、依赖注入、AOP 技术等。 Spring5 应用程序的创建以下是 Spring5 应用程序的创建步骤…

    Java 2023年5月19日
    00
  • 深入jaxb xjc编码问题的详细介绍

    下面我来详细讲解“深入JAXB XJC编码问题的详细介绍”的攻略。 什么是JAXB XJC? JAXB(Java Architecture for XML Binding)是Java中一个处理XML编码和解码的框架。JAXB XJC是JAXB中用于将XSD(XML Schema Definition)文件转换为Java类的工具。它可以生成一组Java类,包括…

    Java 2023年5月20日
    00
  • Java实现局域网IP地址扫描

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

    Java 2023年5月26日
    00
  • java实现学生选课系统

    Java实现学生选课系统攻略 系统功能要求 学生登录、退出登录 查看所有课程列表 查询某门课程的详细信息 选课或退课 查看已选课程列表 数据库设计 选课系统的数据模型可以包含以下几个实体: 学生 课程 选课记录 可以使用MySQL作为数据库实现。下面是数据库表的设计: 表名 字段名 类型 约束 students id int 主键,自增长 username …

    Java 2023年5月19日
    00
  • Java 三种进制的数值常量操作

    Java 三种进制的数值常量操作 在Java中,数值型常量支持三种进制表示方式:十进制、八进制和十六进制。这些常量可以用于表示不同的数字大小和格式,本文将对它们进行详细的讲解。 十进制整数 十进制整数(Decimal Integer)是以10为基数的整数,常用于日常生活中的计数,例如1、2、3、10、100等等。 十进制整数的表示方法非常简单,只要直接写下数…

    Java 2023年5月26日
    00
  • Java实现字符串和输入流的相互转换

    下面是“Java实现字符串和输入流的相互转换”的完整攻略: 1. 字符串转输入流 可以使用Java中的StringBufferInputStream或ByteArrayInputStream将字符串转化为输入流对象。 使用StringBufferInputStream String str = "Hello, World!"; Input…

    Java 2023年5月26日
    00
  • Hibernate中获取Session的两种方式代码示例

    获取 Hibernate 中的 Session 可以通过两种方式:getCurrentSession() 和 openSession()。 getCurrentSession() 方法 getCurrentSession() 方法获取的 Session 是与当前线程绑定的,使用完后会自动关闭。 示例代码如下: Session session = sessio…

    Java 2023年5月31日
    00
  • 动态字节码生成的作用是什么?

    动态字节码生成是指在程序运行过程中动态生成字节码的一种技术。它可以让程序在运行时动态地生成类,方法和字段等内容,而不必像静态代码一样事先写好保存在文件中。这种技术最常见的使用场景是实现动态代理、AOP(面向切面编程)等功能。以下是动态字节码生成的使用攻略。 步骤一:引入相关库 使用动态字节码生成技术需要引入相关的库,下面是两种常用的库: ASM:ASM是Ja…

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