Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何计算当前系统时间和存储时间间隔_Java_Android_Datetime_Admob - Fatal编程技术网

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

Java 如何计算当前系统时间和存储时间间隔,java,android,datetime,admob,Java,Android,Datetime,Admob,我想计算当前系统时间并存储时间间隔。我正在应用程序中使用admob。当用户点击广告时,我想将当前时间存储在SharedReferences中,下一个广告应在10分钟后显示 那么如何计算存储在SharedReferences中的时间与当前系统时间之间的间隔呢 这是我的密码 interstitialAd.setAdListener(new AdListener() { @Override public void onAdClosed() { super.on

我想计算当前系统时间并存储时间间隔。我正在应用程序中使用admob。当用户点击广告时,我想将当前时间存储在
SharedReferences
中,下一个广告应在10分钟后显示

那么如何计算存储在
SharedReferences
中的时间与当前系统时间之间的间隔呢

这是我的密码

 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.
     }
}

您正在使用可怕的日期时间类,这些类在几年前被JSR310中定义的现代java.time类所取代

问题:

当用户点击广告时,我想在SharedReferences中存储当前时间

将中的当前时刻捕捉为对象

生成标准格式的字符串

2019-07-06T04:21:11.091261Z

为了简单起见,您可能希望将其设置为零

Instant instant = Instant.now().truncatedTo( ChronoUnit.SECONDS ) ;
将此字符串写入存储器

问题:

计算存储在SharedReferences中的时间与当前系统时间之间的间隔

检索存储的字符串。作为
即时对象进行分析

Instant instant = Instant.parse( input ) ;
使用类计算经过的时间

精神检查

Boolean movingForwardInTime = ( ! d.isNegative() ) && ( ! d.isZero() ) ;
if ( ! movingForwardInTime ) { … }
测试是否超过我们的限制

Duration limit = Duration.ofMinutes( 10 ) ;
Boolean expired = ( d.compareTo( limit ) > 0 ) ;

关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

该项目现已启动,建议迁移到类

您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*

从哪里获得java.time类

  • 、和更高版本-标准Java API的一部分,带有捆绑实现。
    • Java9添加了一些次要功能和修复
    • 大多数java.time功能都在中向后移植到Java6和Java7
    • 更高版本的Android捆绑包实现了java.time类

    • 对于早期的Android(我已经对你的问题进行了实质性的重新表述,以简化它并使其更易于理解。如果你认为当前状态不代表你想问的问题,请随时回复更改
      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 ) ;