在 Java 中将当前日期时间转换为长整型 [已关闭]从纪元计数的四种方法关于 java.time
我想在Java中将当前日期时间转换为长值。
我知道它必须是DateTime的东西
DateTime datetime = new DateTime();
但是我找不到将日期时间转换为长整型的方法。
我想在Java中将当前日期时间转换为长值。
我知道它必须是DateTime的东西
DateTime datetime = new DateTime();
但是我找不到将日期时间转换为长整型的方法。
其他答案是正确的。
为了详细说明,这里有四种方法可以获得自Unix时代以来的毫秒数,即1970年1月1日开始的UTC / GMT(无时区偏移)。按偏好顺序显示。
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
提供毫秒。请注意数据丢失,因为在生成毫秒数时会忽略 中的任何微秒或纳秒。Instant
Instant
long millis = Instant.now().toEpochMilli();
System
该类的方法当前TimeMillis有效。但是,您可能正在使用日期时间值执行其他一些工作。如果是这样,请跳过系统,只使用日期时间类。System
long millis = System.currentTimeMillis();
Joda-Time是流行的第三方开源库,用于代替/。它的主要类是DateTime
,所以也许这就是你的想法,因为你的问题使用了这个术语。java.util.Date
Calendar
Joda-Time 项目现在处于维护模式。该团队建议迁移到 java.time 类。
long millis = org.joda.time.DateTime.now().getMillis();
java.util.Date
最好避免此类,以及其兄弟姐妹和 .麻烦的旧日期时间类现在是遗留的,被java.time类所取代。但对于您的特定目的,此类确实有效。java.util.Calendar
java.text.SimpleDateFormat
long millis = new java.util.Date().getTime();
顺便说一句,我不建议将跟踪时间作为从纪元计数。使调试变得困难,并且几乎不可能发现无效数据,因为人类无法将 a 解释为日期时间。此外,由于不同的系统使用不同的纪元参考日期,并使用整秒,毫秒,微秒,纳秒等不同粒度,因此不明确。long
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧旧日期时间类,如java.util.Date
,Calendar
和SimpleDateFormat
。
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的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
等。
如果你的意思是当前或现在,那么会为你做。更多信息在这里: http://docs.oracle.com/javase/7/docs/api/java/lang/System.htmlSystem.currentTimeMillis()