java日期之外的getmilliseconds()
-
13-10-2019 - |
题
我需要一个像长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() ;
不隶属于 StackOverflow