gpt4 book ai didi

java - 在 Java 中将当前日期时间转换为 long

转载 作者:搜寻专家 更新时间:2023-10-30 21:13:48 25 4
gpt4 key购买 nike

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

7年前关闭。




Improve this question




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

我知道它必须与 DateTime 有关

DateTime datetime = new DateTime();

但是我找不到将 dateTime 转换为 long 的方法。

最佳答案

其他答案都是正确的。

从 epoch 开始计数的四种方法

为了详细说明,这里有四种方法可以获取自 Unix 以来的毫秒数。 Epoch , 1970 年 1 月 1 日开始于 UTC/GMT (无时区偏移)。按优先顺序呈现。

时间

java.time内置于 Java 8 及更高版本中的类由 JSR 310 定义.这些类取代了过时的 java.util.Date/Calendar 类。这些类受到 Joda-Time 的启发,但经过重新设计。

java.time 类能够保持纳秒分辨率。特别是在 Java 8 中,由于 Clock 的旧实现,捕获当前时刻仅限于毫秒。 . Java 9 带来了 Clock 的全新实现能够以更精细的分辨率捕获当前时刻,受主机操作系统和主机硬件的能力限制。在 macOS Sierra 上的 Oracle JDK 9.0.4 上,我在 microseconds 中获得值, 表示六位小数。
Instant类包含一个方便的方法 toEpochMilli 提供毫秒。谨防数据丢失,因为任何 microsecondsnanosecondsInstant生成 milliseconds 的计数时被忽略.

long millis = Instant.now().toEpochMilli();
System System类的方法 currentTimeMillis作品。但很有可能您正在使用日期时间值做一些其他工作。如果是这样,请跳过 System 并仅使用日期时间类。
long millis = System.currentTimeMillis();

乔达时间

Joda-Time是流行的第三方开源库,用于代替 java.util.Date/ Calendar .它的主类是 DateTime ,所以鉴于您的问题对该术语的使用,这也许就是您的想法。

Joda-Time项目现在在 maintenance mode .团队建议迁移到 java.time类。
long millis = org.joda.time.DateTime.now().getMillis();
java.util.Date
最好避免使用此类及其兄弟类 java.util.Calendarjava.text.SimpleDateFormat .麻烦的旧日期时间类现在是遗留的,被 java.time 类取代。但是对于您的特定目的,该类(class)确实有效。
long millis = new java.util.Date().getTime();

顺便说一句,我不建议跟踪时间作为计数- epoch .使调试变得困难,并且几乎不可能发现无效数据,因为人类无法解释 long作为日期时间。此外,由于不同的系统使用 different epoch reference dates 而含糊不清,并使用整秒的不同粒度, milliseconds , microseconds , nanoseconds , 和别的。

关于 java.time

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

Joda-Time项目,现在在 maintenance mode ,建议迁移到 java.time类。

要了解更多信息,请参阅 Oracle Tutorial .并在 Stack Overflow 上搜索许多示例和解释。规范为 JSR 310 .

您可以直接与您的数据库交换 java.time 对象。使用 JDBC driver符合 JDBC 4.2或以后。不需要字符串,不需要 java.sql.*类。

从哪里获得 java.time 类?
  • Java SE 8 , Java SE 9 , 然后
  • 内置。
  • 具有捆绑实现的标准 Java API 的一部分。
  • Java 9 添加了一些小功能和修复。
  • Java SE 6Java SE 7
  • ThreeTen-Backport 中,大部分 java.time 功能被反向移植到 Java 6 和 7。 .
  • Android
  • 更高版本的 Android 捆绑实现 java.time 类。
  • 对于早期的 Android (<26),ThreeTenABP项目采用 ThreeTen-Backport(如上所述)。见 How to use ThreeTenABP… .

  • ThreeTen-Extra项目使用附加类扩展 java.time。该项目是 future 可能添加到 java.time 的试验场。您可能会在这里找到一些有用的类,例如 Interval , YearWeek , YearQuarter , 和 more .

    关于java - 在 Java 中将当前日期时间转换为 long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21198882/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com