1 回答
TA贡献1943条经验 获得超7个赞
您正在使用多年前被 JSR 310 中定义的现代java.time类所取代的可怕的日期时间类。
来自问题:
当用户点击广告时,我想将当前时间存储在 sharedPreferences 中
将UTC中的当前时刻捕获为Instant对象。
Instant instant = Instant.now() ;
生成标准ISO 8601格式的字符串。
String output = instant.toString() ;
2019-07-06T04:21:11.091261Z
为简单起见,您可能希望将小数秒降为零。
Instant instant = Instant.now().truncatedTo( ChronoUnit.SECONDS ) ;
将此字符串写入存储。
来自问题:
计算存储在 sharedPreferences 中的时间与当前系统时间之间的间隔?
检索存储的字符串。解析为Instant对象。
Instant instant = Instant.parse( input ) ;
使用Duration类计算经过的时间。
Duration d = Duration.between( instant , Instant.now() ) ;
完整性检查。
Boolean movingForwardInTime = ( ! d.isNegative() ) && ( ! d.isZero() ) ;
if ( ! movingForwardInTime ) { … }
测试是否超过我们的限制。
Duration limit = Duration.ofMinutes( 10 ) ;
Boolean expired = ( d.compareTo( limit ) > 0 ) ;
添加回答
举报