如何在旧版Android中降级java.time代码?

如何在旧版Android中降级java.time代码?,java,android,time,downgrade,Java,Android,Time,Downgrade,我有一个简洁的代码,它生成了两个日期之间的日期列表,然后是当天的日期,以及它在列表中的位置(最重要的是,所有日期的格式都是相同的,这使得比较它们很容易) //创建天数列表 字符串s=“2018-08-28”; 字符串e=“2018-09-05”; LocalDate start=LocalDate.parse; LocalDate end=LocalDate.parse(e); List totalDates=新建ArrayList(); 而(!start.isAfter(end)){ tota

我有一个简洁的代码,它生成了两个日期之间的日期列表,然后是当天的日期,以及它在列表中的位置(最重要的是,所有日期的格式都是相同的,这使得比较它们很容易)

//创建天数列表
字符串s=“2018-08-28”;
字符串e=“2018-09-05”;
LocalDate start=LocalDate.parse;
LocalDate end=LocalDate.parse(e);
List totalDates=新建ArrayList();
而(!start.isAfter(end)){
totalDates.add(开始);
开始=开始。多个星期(1);
}
//当日日期和地点
LocalDate a=LocalDate.now();
int current_day=总日期。索引(a)+1;
问题是,当我在Java IDE中使用此代码时,我不知道它的某些部分(
.parse();.now();.isAfter();.plusDays()
)是为26+级API手机保留的。或者,我的应用程序应该使用的最大API是API 23

我想知道如何以最有效的方式“降级”,但我不知道该做什么或从何处开始。

Back port 不需要“降级”。大部分java.time功能都已进行了后端口

将ThreeTen Backport库添加到probject中,该库专门针对ThreeTenABP项目中的Android进行了调整。见下面的链接,在底部

遗留的日期时间类是一个可怕的烂摊子——永远不要使用它们

顺便说一下,您提到的那些文本格式是标准格式,在中定义。默认情况下,java.time类在解析/生成字符串时使用这些格式


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

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

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

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

从哪里获得java.time类

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

    • 对于早期的Android(ThreeTeenApp)来说,不再需要在旧版本的Android平台上支持这些语言API。 您可以使用核心库去糖

      只需将Android插件更新为4.0.0(或更高版本),并在模块的build.gradle文件中包含以下内容:

      android {
        defaultConfig {
          // Required when setting minSdkVersion to 20 or lower
          multiDexEnabled true
        }
      
        compileOptions {
          // Flag to enable support for the new language APIs
          coreLibraryDesugaringEnabled true
          // Sets Java compatibility to Java 8
          sourceCompatibility JavaVersion.VERSION_1_8
          targetCompatibility JavaVersion.VERSION_1_8
        }
      }
      
      dependencies {
        coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10'
      }
      

      看看
      Calendar
      API。@ChristopherSchneider不,可怕的
      Calendar
      类在几年前就被现代的java.time类取代了。后台端口在Three Ten Backport和Three TenaBP项目中可用。非常感谢,我不知道!但是,我不确定我是否完全理解了这些文档。是唯一的ng我必须做的是使java.time可用于API 26-:First-put
      实现'com.jakewharton.threetenabp:threetenabp:1.1.0'
      中的依赖项和second-put
      AndroidThreeTen.init(此);
      就在我的OnCreate下方?@Artemyx抱歉,我不知道。我不是Android开发者。搜索堆栈溢出。如果没有覆盖,请发布另一个与该问题相关的问题。哦,好的。谢谢!
      android {
        defaultConfig {
          // Required when setting minSdkVersion to 20 or lower
          multiDexEnabled true
        }
      
        compileOptions {
          // Flag to enable support for the new language APIs
          coreLibraryDesugaringEnabled true
          // Sets Java compatibility to Java 8
          sourceCompatibility JavaVersion.VERSION_1_8
          targetCompatibility JavaVersion.VERSION_1_8
        }
      }
      
      dependencies {
        coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10'
      }