在Java中将时间转换为毫秒

2025/04/15

1. 概述

在本快速教程中,我们将说明在Java中将时间转换为Unix纪元毫秒的多种方法

更具体地说,我们将使用:

  • 核心Java的java.util.Date和Calendar
  • Java 8的日期和时间API
  • Joda-Time库

2. 核心Java

2.1 使用Date

首先,让我们定义一个millis属性来保存毫秒的随机值:

long millis = 1556175797428L; // April 25, 2019 7:03:17.428 UTC

我们将使用这个值来初始化我们的各种对象并验证结果。

接下来,让我们从一个Date对象开始:

Date date = // implementation details

现在,我们只需调用getTime()方法即可将日期转换为毫秒

Assert.assertEquals(millis, date.getTime());

2.2 使用Calendar

同样,如果我们有一个Calendar对象,我们可以使用getTimeInMillis()方法:

Calendar calendar = // implementation details
Assert.assertEquals(millis, calendar.getTimeInMillis());

3. Java 8日期时间API

3.1 使用Instant

简单来说,Instant是Java纪元时间轴上的一个点。

我们可以从Instant获取当前时间(以毫秒为单位):

java.time.Instant instant = // implementation details
Assert.assertEquals(millis, instant.toEpochMilli());

因此,toEpochMilli()方法返回与我们之前定义的相同的毫秒数。

3.2 使用LocalDateTime

类似地,我们可以使用Java 8的日期和时间API将LocalDateTime转换为毫秒:

LocalDateTime localDateTime = // implementation details
ZonedDateTime zdt = ZonedDateTime.of(localDateTime, ZoneId.systemDefault());
Assert.assertEquals(millis, zdt.toInstant().toEpochMilli());

首先,我们创建了当前日期的实例,然后,我们使用toEpochMilli()方法将ZonedDateTime转换为毫秒。

我们知道,LocalDateTime不包含时区信息,换句话说,我们无法直接从LocalDateTime实例获取毫秒数

4. Joda-Time

虽然Java 8增加了Joda-Time的许多功能,但如果我们使用的是Java 7或更早版本,我们可能希望使用此选项。

4.1 使用Instant

首先,我们可以使用getMillis()方法从Joda-TimeInstant类实例中获取当前系统毫秒数:

Instant jodaInstant = // implementation details
Assert.assertEquals(millis, jodaInstant.getMillis());

4.2 使用DateTime

此外,如果我们有一个Joda-Time DateTime实例:

DateTime jodaDateTime = // implementation details

然后我们可以使用getMillis()方法检索毫秒数:

Assert.assertEquals(millis, jodaDateTime.getMillis());

5. 总结

本文演示了如何在Java中将时间转换为毫秒。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章