我需要一个像长getmillis(日期adate)这样的功能;

这将返回日期的毫秒。我不能使用YODA,SimpleDateFormat或其他库,因为它是GWT代码。

我目前的解决方案正在做 date.getTime() % 1000

有没有更好的办法?

有帮助吗?

解决方案

正如彼得·劳瑞(Peter Lawrey)所指出的那样,通常您需要类似的东西

int n = (int) (date.getTime() % 1000);
return n<0 ? n+1000 : n;

自从 % 在Java中以“奇怪”的方式工作。我称它为奇怪的 总是 需要结果落入给定范围(此处:0..999),而不是有时获得负面结果。不幸的是,它在大多数CPU和大多数语言中都这样起作用,因此我们必须使用它。

其他提示

在上面尝试并采取了意外的行为,直到我使用1000个mod。

int n = (int) (date.getTime() % 1000l);
return n<0 ? n+1000 : n;

tl; dr

aDate.toInstant()
     .toEpochMilli()

Java.Time

现代方法使用Java.Time类。这些取代了麻烦的旧旧课程,例如 java.util.Date.

Instant instant = Instant.now();  // Capture current moment in UTC.

自从时代以来,提取您的毫秒数 1970-01-01T00:00:00Z.

long millis = instant.toEpochMilli() ;

转换

如果您通过了 java.util.Date 对象,转换为Java.Time。调用添加到旧类中的新方法。

Instant instant = myJavaUtilDate.toInstant() ;
long millis = instant.toEpochMilli() ;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top