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

我想计算当前系统时间和存储时间间隔。我在我的应用程序中使用 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.

     }

}


四季花海
浏览 85回答 1
1回答

杨__羊羊

您正在使用多年前被 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 ) ;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java