为了账号安全,请及时绑定邮箱和手机立即绑定

如何计算当前系统时间和存储时间间隔

如何计算当前系统时间和存储时间间隔

四季花海 2023-03-09 15:18:12
我想计算当前系统时间和存储时间间隔。我在我的应用程序中使用 admob。当用户点击我要存储当前时间的广告时sharedPreferences,下一个广告应在 10 分钟后显示。sharedPreferences那么我如何计算存储时间和当前系统时间之间的间隔呢?这是我的代码。 interstitialAd.setAdListener(new AdListener() {     @Override     public void onAdClosed() {         super.onAdClosed();         startActivity(intent);         interstitialAd.loadAd(new AdRequest.Builder().build());     }     @Override     public void onAdLoaded() {         // Code to be executed when an ad finishes loading.         Toast.makeText(Chapters.this, "loaded", Toast.LENGTH_SHORT).show();     }     @Override     public void onAdFailedToLoad(int errorCode) {         // Code to be executed when an ad request fails.     }     @Override     public void onAdOpened() {         // Code to be executed when the ad is displayed.     }     @Override     public void onAdClicked() {         SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");         // Find todays date         String currentDateTime = dateFormat.format(new Date());          sharedPreferences=getSharedPreferences("TimeStamp",MODE_PRIVATE);         SharedPreferences.Editor editor=sharedPreferences.edit();         editor.putString("currenttime",currentDateTime);         editor.commit();     }     @Override     public void onAdLeftApplication() {         // Code to be executed when the user has left the app.     }}
查看完整描述

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 ) ;


查看完整回答
反对 回复 2023-03-09
  • 1 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信