如何在旧版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' }
看看
API。@ChristopherSchneider不,可怕的Calendar
类在几年前就被现代的java.time类取代了。后台端口在Three Ten Backport和Three TenaBP项目中可用。非常感谢,我不知道!但是,我不确定我是否完全理解了这些文档。是唯一的ng我必须做的是使java.time可用于API 26-:First-putCalendar
中的依赖项和second-put实现'com.jakewharton.threetenabp:threetenabp:1.1.0'
就在我的OnCreate下方?@Artemyx抱歉,我不知道。我不是Android开发者。搜索堆栈溢出。如果没有覆盖,请发布另一个与该问题相关的问题。哦,好的。谢谢!AndroidThreeTen.init(此);
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' }