Java时间相关类超详细介绍

在这里插入图片描述

1.JAVA时间相关类汇总

java.util

  1. java.util.Date: 是 Java 最早的日期时间类,但它已被弃用。它表示自 1970 年 1 月 1 日 00:00:00 GMT(格林尼治标准时间)以来的毫秒数。

  2. java.util.Calendar: 是用于处理日期时间的抽象基类。它提供了对日期时间字段(如年、月、日、小时等)进行操作的方法。

  3. java.util.GregorianCalendar: 是 Calendar 的具体子类,用于实现格里高利历。它提供了对日期时间的操作,同时支持国际化和本地化。

java.time

java.time 包下的类: Java 8 引入了新的日期时间 API,包括以下几个主要类:

  • java.time.LocalDate: 表示日期(年、月、日)。
  • java.time.LocalTime: 表示时间(小时、分钟、秒)。
  • java.time.LocalDateTime: 表示日期时间(年、月、日、小时、分钟、秒)。
  • java.time.ZonedDateTime: 表示带时区的日期时间。
  • java.time.Instant: 表示时间戳(从1970-01-01T00:00:00Z开始的秒数)。
  • java.time.Duration: 表示持续时间。
  • java.time.Period: 表示日期间隔。

java.sql

java.sql 包下的类: 用于处理数据库中的日期时间数据,主要包括以下几个类:

  • java.sql.Date: 表示 SQL DATE 类型,仅包含日期(年、月、日),没有时间部分。
  • java.sql.Time: 表示 SQL TIME 类型,仅包含时间(小时、分钟、秒),没有日期部分。
  • java.sql.Timestamp: 表示 SQL TIMESTAMP 类型,包含日期和时间(年、月、日、小时、分钟、秒)。

Other

除了上述提到的常用的时间类之外,还有一些其他的时间类,虽然不太常用,但也值得了解:

  1. java.util.DateUtils: DateUtils 类是 Apache Commons Lang 库中的一个实用类,提供了一些有用的静态方法来处理日期时间,例如日期加减、格式化、比较等。

  2. java.text.SimpleDateFormat: SimpleDateFormat 类是用于格式化和解析日期时间字符串的类。它允许你通过模式字符串来定义日期时间的格式,例如 “yyyy-MM-dd HH:mm:ss”。

  3. java.util.Timer 和 java.util.TimerTask: Timer 类用于调度后台线程以在指定时间执行任务,而 TimerTask 则是要执行的任务。它们可以用于定时执行一些操作,如定时任务、定时器等。

  4. java.time.format.DateTimeFormatter: DateTimeFormatter 类是 Java 8 中用于日期时间格式化和解析的类。它可以将日期时间对象格式化为字符串,也可以将字符串解析为日期时间对象,提供了丰富的日期时间格式化选项。

这些类可以根据具体的需求来选择使用。在进行日期时间处理时,建议优先选择 Java 8 中引入的新的日期时间 API(java.time 包下的类),因为它们提供了更好的性能和功能,同时支持不可变性和线程安全性。

2.常用时间类详细介绍使用

java.util.Date概念介绍

在这里插入图片描述
java.util.Date 是 Java 最早引入的日期时间类之一,用于表示特定的日期和时间点。以下是关于 java.util.Date 类的一些详细介绍:

  1. 日期时间表示: java.util.Date 表示自 1970 年 1 月 1 日 00:00:00 GMT(格林尼治标准时间)以来的毫秒数。它实际上是一个包装了一个长整型值的对象,该长整型值表示的是自纪元以来的毫秒数。

  2. 不可变性: java.util.Date 类是不可变的,一旦创建了一个 Date 对象,其值就不能被修改。这意味着你不能直接更改 Date 对象的日期或时间,而是需要创建一个新的 Date 对象来表示新的日期或时间。

  3. 过时方法: 尽管 java.util.Date 是 Java 中最早的日期时间类之一,但它已经被标记为过时(deprecated)。这是因为它存在一些问题,比如它不支持时区信息,也不是线程安全的。因此,Java 8 引入了新的日期时间 API(java.time 包下的类),推荐使用新的 API 来替代 java.util.Date

  4. 与时间戳的关系: java.util.Date 类本质上是一个时间戳,表示从1970年1月1日00:00:00以来的毫秒数。它类似于 Unix 时间戳(Unix Epoch),但是精确度更高,可以精确到毫秒级别。

  5. 格式化和解析: java.util.Date 类本身不负责格式化和解析日期时间字符串,但可以通过 SimpleDateFormat 类来进行格式化和解析。

  6. 使用注意事项: 尽管 java.util.Date 类已被标记为过时,但在某些情况下仍然会使用到它。在使用时需要注意避免直接使用它的构造函数和部分方法,尽量使用 Calendar 类或新的日期时间 API 来处理日期和时间。

java.util.Date基本使用

java.util.Date 类是 Java 中最早的日期时间类之一,用于表示特定的日期和时间点。虽然它已经被标记为过时(deprecated),但在某些情况下仍然会被使用。以下是关于如何使用 java.util.Date 类的一些示例:

1. 创建 Date 对象

要创建一个表示当前日期时间的 Date 对象,可以直接调用无参构造函数:

Date currentDate = new Date();

2. 获取日期时间

可以使用 getTime() 方法获取日期时间的毫秒数表示:

long milliseconds = currentDate.getTime();

3. 格式化输出

可以使用 SimpleDateFormat 类来将 Date 对象格式化为指定格式的字符串:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = sdf.format(currentDate);
System.out.println("Formatted Date: " + formattedDate);

4. 日期时间比较

可以使用 compareTo() 方法比较两个 Date 对象的先后顺序:

Date anotherDate = new Date();
if (currentDate.compareTo(anotherDate) > 0) {
   
    // currentDate 晚于 anotherDate
} else if (currentDate.compareTo(anotherDate) < 0) {
   
    // currentDate 早于 anotherDate
} else {
   
    // 两个日期相等
}

5. 时间戳转换

可以使用 java.sql.Timestamp 类将 Date 对象转换为 SQL TIMESTAMP 类型:

Timestamp timestamp = new Timestamp(currentDate.getTime());

6. 其他操作

  • 使用 setTime() 方法设置日期时间的毫秒数。
  • 使用 before()after() 方法比较日期时间的先后顺序。
  • 注意 java.util.Date 对象是可变的,可以通过 setTime() 方法直接改变其值,因此在多线程环境下需要谨慎使用。

java.util.Calendar概念

java.util.Calendar 是 Java 提供的日期时间操作的一个类,它提供了一组方法来处理日期和时间,并支持国际化和时区。以下是关于 java.util.Calendar 类的详细介绍:

  1. 抽象基类: java.util.Calendar 是一个抽象基类,用于表示日期时间对象。它提供了一个通用的日历系统,可以处理日期、时间、星期几等日历字段,并支持对这些字段进行操作。

  2. 单例获取: Calendar 类通过 getInstance() 静态方法来获取一个 Calendar 对象的实例。默认情况下,该方法返回一个表示当前日期时间的 Calendar 对象。

  3. 操作日期时间: Calendar 类提供了一系列方法来操作日期时间,包括设置、获取日期时间字段(年、月、日、时、分、秒等)、日期时间加减、日期比较等操作。

  4. 时区和地区: Calendar 类支持时区和地区的设置,可以根据需要设置不同的时区和地区,以处理不同地区的日期时间。

  5. 国际化支持: Calendar 类支持国际化,可以根据不同的地区和语言来格式化日期时间,以及获取星期几、月份等信息。

  6. 线程安全性: Calendar 类的实例不是线程安全的,如果多个线程需要访问和操作同一个 Calendar 实例,则需要使用同步机制来确保线程安全。

  7. 与时间戳的关系:java.util.Date 类不同,Calendar 类不直接表示日期时间的毫秒数,而是根据日历系统的规则来表示日期时间字段,因此在处理日期时间时更加灵活。

  8. 使用注意事项: Calendar 类是一个老旧的日期时间类,在 Java 8 引入了新的日期时间 API(java.time 包下的类)后,推荐使用新的 API 来处理日期和时间,因为新的 API 更加简洁、清晰,并且解决了 Calendar 类存在的一些问题。

总的来说,java.util.Calendar 类是 Java 中用于处理日期时间的一个基础类,但由于其复杂的操作和不够直观的接口,已经被新的日期时间 API 所取代。因此,在新的开发中,推荐使用新的日期时间 API 来代替 Calendar 类。

java.util.Calendar使用

java.util.Calendar 是 Java 中用于操作日期和时间的一个类,它提供了丰富的方法来处理日期时间字段,并支持国际化和时区。以下是关于 java.util.Calendar 的详细介绍和使用方法:

1. 获取 Calendar 实例

要获取 Calendar 实例,可以使用 getInstance() 方法:

Calendar calendar = Calendar.getInstance();

2. 设置日期时间字段值

可以使用 set() 方法来设置日期时间字段的值,例如设置年份:

calendar.set(Calendar.YEAR, 2023);

3. 获取日期时间字段值

可以使用 get() 方法来获取日期时间字段的值,例如获取月份:

int month = calendar.get(Calendar.MONTH);

4. 日期时间加减

可以使用 add() 方法来对日期时间进行加减操作,例如加一天:

calendar.add
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pineux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值