我想使用System.currentTimeMillis()
比较两个不同的时间戳。
基本上我想检查时间戳是否在特定日期的3小时范围内。
怎么做?
答案 0 :(得分:4)
考虑到您有time1
和time2
,time1 <= time2
可以执行此操作:
if (time1 >= time2-(60*60*3*1000)) {
// interval is up to 3 hours
} else {
// interval is more than 3 hours
}
答案 1 :(得分:1)
使用Instant
获取时代中的时间并将其转换为LocalDateTime
以获取有关当天的信息并检查,如果第一次加3小时小于第二次:< / p>
long millis1 = System.currentTimeMillis();
...
long millis2 = System.currentTimeMillis();
Instant instant1 = Instant.EPOCH.plusMillis(millis1);
Instant instant2 = Instant.EPOCH.plusMillis(millis2);
LocalDateTime t1 = LocalDateTime.ofInstant(instant1, ZoneId.systemDefault());
LocalDateTime t2 = LocalDateTime.ofInstant(instant2, ZoneId.systemDefault());
System.out.println("same day: " + (t1.getDayOfYear() == t2.getDayOfYear()));
System.out.println("t1+3h >= t2: " + (t1.plusHours(3).compareTo(t2) >= 0));
答案 2 :(得分:0)
这是一个可能帮助您的示例程序。这里的关键是方法&#34; findIfDatesWithinThreeHours&#34;这有助于是否找出两个实例是否相隔三个小时。
foreach ($instance["widgets"] as $widgetID) {
$wdgtvar = 'widget_'._get_widget_id_base( $widgetID );
$idvar = _get_widget_id_base( $widgetID ); $instance = get_option( $wdgtvar );
$idbs = str_replace( $idvar.'-', '', $widgetID );
the_widget($idvar,$instance[$idbs]);
}
答案 3 :(得分:0)
你的问题很模糊。这可能会让你指向正确的方向。
如果通过&#34; timestamp&#34;你的意思是自1970年UTC世纪以来的一个毫秒数,construct an Instant
。此类表示UTC时间轴上的时刻,分辨率为纳秒(小于毫秒)。
Instant instant = Instant.ofEpochMilli( millis );
获取当前时刻。
Instant now = Instant.now();
计算三个小时。
Instant in3Hours = now.plus( 3 , ChronoUnit.HOURS );
看看你的时刻是从现在到三小时之间。
Boolean contained = ( ( ! instant.isBefore( now ) ) && instant.isBefore( in3Hours ) );
如果您想要比较一对时刻以查看经过的时间是否少于3小时,请使用Duration
。此类表示以秒和纳秒为单位的时间跨度。
Instant earlierInstant = … ;
Instant laterInstant = … ;
Duration duration = Duration.between( earlierInstant , laterInstant );
if ( duration.isNegative() ) {
… handle error of unexpected data inputs where the second instant is *before* the first instant.
}
… else …
Boolean elapsedUnderThreeHours = ( duration.compareTo( Duration.ofHours( 3 ) ) == -1 );