Lem*_*nio 124 java time date milliseconds
请注意,我不希望毫米来自时代.我想要当前时钟的毫秒数.
例如,我有这段代码.
Date date2 = new Date();
Long time2 = (long) (((((date2.getHours() * 60) + date2.getMinutes())* 60 ) + date2.getSeconds()) * 1000);
Run Code Online (Sandbox Code Playgroud)
有没有办法让日期达到毫秒?还有另一种方法吗?
注意: System.currentTimeMillis()
从我所寻找的不是我的时代给我毫升.
Pet*_*rey 195
你的意思是?
long millis = System.currentTimeMillis() % 1000;
Run Code Online (Sandbox Code Playgroud)
BTW Windows不允许时间旅行到1969年
C:\> date
Enter the new date: (dd-mm-yy) 2/8/1969
The system cannot accept the date entered.
Run Code Online (Sandbox Code Playgroud)
Mar*_*nen 24
使用日历
Calendar.getInstance().get(Calendar.MILLISECOND);
Run Code Online (Sandbox Code Playgroud)
要么
Calendar c=Calendar.getInstance();
c.setTime(new Date()); /* whatever*/
//c.setTimeZone(...); if necessary
c.get(Calendar.MILLISECOND);
Run Code Online (Sandbox Code Playgroud)
在实践中,虽然我认为它几乎总是等于System.currentTimeMillis()%1000; 除非某人有跳跃毫秒或某个日历定义的时间不在第二个边界上.
kga*_*ron 16
Calendar.getInstance().get(Calendar.MILLISECOND);
Run Code Online (Sandbox Code Playgroud)
小智 12
我尝试了上面几个,但他们似乎重置了@ 1000
这个肯定有效,也应该花一年时间考虑
long millisStart = Calendar.getInstance().getTimeInMillis();
Run Code Online (Sandbox Code Playgroud)
如果需要,然后在结束时间做同样的事情.
Bas*_*que 11
你要求当前时间的一小部分为几毫秒(不从纪元算起).
Instant.now() // Get current moment in UTC, then…
.get( ChronoField.MILLI_OF_SECOND ) // interrogate a `TemporalField`.
Run Code Online (Sandbox Code Playgroud)
2017-04-25T03:01:14.113Z→
113
请参阅IdeOne.com上的此代码.
现代方法是使用java.time类.
捕获UTC中的当前时刻.
Instant.now()
Run Code Online (Sandbox Code Playgroud)
使用该Instant.get
方法查询a的值TemporalField
.在我们的例子中,TemporalField
我们想要的是ChronoField.MILLI_OF_SECOND
.
int millis = Instant.now().get( ChronoField.MILLI_OF_SECOND ) ; // Get current moment in UTC, then interrogate a `TemporalField`.
Run Code Online (Sandbox Code Playgroud)
或者自己做数学.
您更有可能在特定时区询问此问题.一秒钟的分数很可能与之相同,Instant
但是时区有很多异常现象,我犹豫不决.
ZonedDateTime zdt = ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) ;
Run Code Online (Sandbox Code Playgroud)
询问小数秒.问题要求毫秒,但java.time类使用更精细的纳秒级分辨率.这意味着纳秒的数量范围为0到999,999,999.
long nanosFractionOfSecond = zdt.getNano();
Run Code Online (Sandbox Code Playgroud)
如果你真的想要毫秒,则通过除以一百万来截断更精细的数据.例如,半秒是500,000,000纳秒并且也是500毫秒.
long millis = ( nanosFractionOfSecond / 1_000_000L ) ; // Truncate nanoseconds to milliseconds, by a factor of one million.
Run Code Online (Sandbox Code Playgroud)
该java.time框架是建立在Java 8和更高版本.这些类取代麻烦的老传统日期时间类,如java.util.Date
,Calendar
,和SimpleDateFormat
.
现在处于维护模式的Joda-Time项目建议迁移到java.time类.
要了解更多信息,请参阅Oracle教程.并搜索Stack Overflow以获取许多示例和解释.规范是JSR 310.
从哪里获取java.time类?
该ThreeTen-额外项目与其他类扩展java.time.该项目是未来可能添加到java.time的试验场.您可以在此比如找到一些有用的类Interval
,YearWeek
,YearQuarter
,和更多.
long timeNow = System.currentTimeMillis();
System.out.println(new Date(timeNow));
2014 年 4 月 4 日星期五 14:27:05 PDT