在 Java 中将当前日期时间转换为长整型 [已关闭]从纪元计数的四种方法关于 java.time

2022-09-04 05:08:05

我想在Java中将当前日期时间转换为长值。

我知道它必须是DateTime的东西

DateTime datetime = new DateTime();

但是我找不到将日期时间转换为长整型的方法。


答案 1

其他答案是正确的。

从纪元计数的四种方法

为了详细说明,这里有四种方法可以获得自Unix时代以来的毫秒数,即1970年1月1日开始的UTC / GMT(无时区偏移)。按偏好顺序显示。

java.time

Java 8 及更高版本中内置的 java.time 类由 JSR 310 定义。这些类取代了过时的 java.util.Date/Calendar 类。这些课程的灵感来自Joda-Time,但经过了重新设计。

java.time 类能够保持纳秒级的分辨率。特别是在Java 8中,由于时钟的旧实现,捕获当前时刻被限制为毫秒。Java 9带来了时钟的全新实现,能够以更精细的分辨率捕获当前时刻,并受到主机操作系统和主机硬件功能的限制。在 macOS Sierra 上的 Oracle JDK 9.0.4 上,我以微秒为单位获得小数六位数字的值。

该类包括一个方便的方法,以EpochMilli提供毫秒。请注意数据丢失,因为在生成毫秒数时会忽略 中的任何秒或纳秒InstantInstant

long millis = Instant.now().toEpochMilli();

System

该类的方法当前TimeMillis有效。但是,您可能正在使用日期时间值执行其他一些工作。如果是这样,请跳过系统,只使用日期时间类。System

long millis = System.currentTimeMillis();

城大时间

Joda-Time是流行的第三方开源库,用于代替/。它的主要类是DateTime,所以也许这就是你的想法,因为你的问题使用了这个术语。java.util.DateCalendar

Joda-Time 项目现在处于维护模式。该团队建议迁移到 java.time 类。

long millis = org.joda.time.DateTime.now().getMillis();

java.util.Date

最好避免此类,以及其兄弟姐妹和 .麻烦的旧日期时间类现在是遗留的,被java.time类所取代。但对于您的特定目的,此类确实有效。java.util.Calendarjava.text.SimpleDateFormat

long millis = new java.util.Date().getTime();

顺便说一句,我不建议将跟踪时间作为从纪元计数。使调试变得困难,并且几乎不可能发现无效数据,因为人类无法将 a 解释为日期时间。此外,由于不同的系统使用不同的纪元参考日期,并使用整秒,毫秒微秒纳秒等不同粒度,因此不明确。long


关于 java.time

java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧日期时间类,如java.util.DateCalendarSimpleDateFormat

Joda-Time 项目现在处于维护模式,建议迁移到 java.time 类。

要了解更多信息,请参阅 Oracle 教程。搜索 Stack Overflow 以获取许多示例和解释。规格是JSR 310

您可以直接与数据库交换 java.time 对象。使用符合 JDBC 4.2 或更高版本的 JDBC 驱动程序。不需要字符串,不需要类。java.sql.*

从哪里获取 java.time 类?

ThreeTen-Extra 项目通过其他类扩展了 java.time。这个项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuarter


答案 2

如果你的意思是当前现在,那么会为你做。更多信息在这里: http://docs.oracle.com/javase/7/docs/api/java/lang/System.htmlSystem.currentTimeMillis()