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

2024-04-23

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

//Create list of days
String s = "2018-08-28";
String e = "2018-09-05";
LocalDate start = LocalDate.parse(s);
LocalDate end = LocalDate.parse(e);
List<LocalDate> totalDates = new ArrayList<>();
while (!start.isAfter(end)) {
    totalDates.add(start);
    start = start.plusDays(1);
}

//Date and place of current day
LocalDate a = LocalDate.now();
int current_day = totalDates.indexOf(a) + 1;

问题是,当我在 Java IDE 中使用这段代码时,我不知道它的某些部分(.parse() ; .now() ; .isAfter() ; .plusDays()) 为 26+ 级别的 API 手机保留。或者,我的应用程序应运行的最大 API 是 API 23。

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


后端口

无需“降级”。大部分的java.time功能已向后移植。

Add the 三十后端口库到您的项目,专门针对 Android 进行了调整三十ABP项目。请参阅下面的链接。

遗留的日期时间类是一团糟——永远不要使用它们。

顺便说一句,您提到的那些文本格式是标准的,定义于ISO 8601 https://en.wikipedia.org/wiki/ISO_8601. The java.time类在解析/生成字符串时默认使用这些格式。


About java.time

The java.time http://docs.oracle.com/javase/10/docs/api/java/time/package-summary.html框架内置于 Java 8 及更高版本中。这些课程取代了麻烦的旧课程legacy https://en.wikipedia.org/wiki/Legacy_system日期时间类,例如java.util.Date https://docs.oracle.com/javase/10/docs/api/java/util/Date.html, Calendar https://docs.oracle.com/javase/10/docs/api/java/util/Calendar.html, & SimpleDateFormat http://docs.oracle.com/javase/10/docs/api/java/text/SimpleDateFormat.html.

The 乔达时间 http://www.joda.org/joda-time/项目,现在在维护模式 https://en.wikipedia.org/wiki/Maintenance_mode,建议迁移到java.time http://docs.oracle.com/javase/10/docs/api/java/time/package-summary.html类。

要了解更多信息,请参阅甲骨文教程 http://docs.oracle.com/javase/tutorial/datetime/TOC.html。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310 https://jcp.org/en/jsr/detail?id=310.

您可以交换java.time对象直接与您的数据库。用一个JDBC驱动程序 https://en.wikipedia.org/wiki/JDBC_driver符合JDBC 4.2 http://openjdk.java.net/jeps/170或稍后。不需要字符串,不需要java.sql.*类。

从哪里获取 java.time 类?

  • Java SE 8 https://en.wikipedia.org/wiki/Java_version_history#Java_SE_8, Java SE 9 https://en.wikipedia.org/wiki/Java_version_history#Java_SE_9, Java SE 10 https://en.wikipedia.org/wiki/Java_version_history#Java_SE_10, Java SE 11 https://en.wikipedia.org/wiki/Java_version_history#Java_SE_11, and later - Part of the standard Java API with a bundled implementation.
    • Java 9 添加了一些小功能和修复。
  • Java SE 6 https://en.wikipedia.org/wiki/Java_version_history#Java_SE_6 and Java SE 7 https://en.wikipedia.org/wiki/Java_version_history#Java_SE_7
    • 许多 java.time 功能都向后移植到 Java 6 和 7三十后端口 http://www.threeten.org/threetenbp/.
  • Android https://en.wikipedia.org/wiki/Android_(operating_system)
    • 更高版本的 Android 捆绑实现java.time类。
    • 对于早期的 Android (三十ABP项目适应三十后端口 http://www.threeten.org/threetenbp/(上文提到的)。看如何使用 ThreeTenABP... http://stackoverflow.com/q/38922754/642706.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何降级旧版 Android 中的 java.time 代码? 的相关文章

随机推荐

  • bigquery 中的条件连接

    我有两张桌子 表 1 是单列整数 表 2 有三列 start integer end integer data 简单的查询是将整数列与数据连接起来 其中 integer gt start integer AND integer lt end
  • “更改材料轮廓颜色”按钮不起作用

    我想更改活动切换按钮的颜色 但仅仅改变rippleColor 就会产生影响 我希望自定义活动按钮的背景颜色和文本颜色 在下面的toggleButtonGroup中 我使用了上面的这种样式
  • 使用 .NET 4.5.2 从 C# 代码更改键盘布局

    我正在为 SDL Trados Studio 插件编写代码 插件的最后一部分需要一些 API 根本没有公开的自动化 所以我所拥有的 坚持一些东西 就是自动化默认的键盘快捷键 我的代码非常适合英语键盘布局 还有匈牙利语 但它当然不适用于希腊语
  • 如何从同一台机器上运行的 Docker 加载主机中运行的 MongoDB 中的数据?

    我正在 Ubuntu 18 02 机器上通过以下命令运行 Pytorch docker 容器 Run Pytorch container image docker run it v home ubuntu Downloads docker
  • xcode 5 无法看到旧 iOS 项目中的 NSLog(s)

    我有一个旧的iOS6我去年玩过的应用程序 它只适合我的妻子 所以我从未发布过它 但我想掸掉它 看看它是否对其他人有用 所以我把它加载到XCode5 5 0 2 在 10 8 4 上运行 我也在我的家用笔记本电脑上尝试过这个 运行相同的XCo
  • 如何在 Xamarin Forms 中的其他项目之上显示 ListView?

    I have a ListView that displays recent Search items I have added it in the Stack Layout of my Main page I want to show L
  • HTML 输入文件按用户选择顺序进行多重排序

    如果用户选择多个文件 则需要按用户选择优先级排序 如facebook FileList 需要取决于用户顺序 这是示例代码 function handleFileSelect evt var files evt target files Fi
  • gestureRecognizer:shouldReceive Touch:没有被调用

    gestureRecognizer shouldReceive Touch 方法未被调用 是我设置不当吗 id init UILongPressGestureRecognizer touchHold UILongPressGestureRe
  • ContinueWith() 内的函数不起作用

    public void Login string email emailInputField text string password passwordInputField text auth SignInWithEmailAndPassw
  • 寻找短语共现矩阵的有效算法

    我有一个包含大约 40 000 个短语的列表 L 和一个包含大约 1000 万个单词的文档 我想检查的是哪一对短语同时出现在 4 个单词的窗口内 例如 考虑 L 棕色狐狸 懒狗 该文件包含 一只敏捷的棕色狐狸跳过懒狗 的字样 我想看看 棕色
  • 获取表的某些列只有空值

    我需要知道一张表的哪些列只有空值 我知道我应该在 user tab columns 中执行循环 但是如何仅检测具有空值的列呢 感谢并抱歉我的英语 要在事先不知道列标识的情况下执行查询 需要使用动态 SQL 假设您已经知道该表不为空 您可以执
  • 如何为静态变量分配内存?

    在下面的程序中 class Main static string staticVariable Static Variable string instanceVariable Instance Variable public Main Th
  • Micro USB 音频 - Android 开放配件

    好的 我正在从事一个处于研究阶段的独立项目 我浏览了互联网 没有发现关于这个话题的任何好东西 我发现的网站在编程社区中与 StackOverflow 一样各自独立 使用 Android 2 3 4 Gingerbread 中包含的 Andr
  • 固定表格标题与水平和垂直滚动主体

    目标 表头和表体的列宽应相同 表格标题固定在垂直滚动条上 要在水平滚动上移动的表标题 标头显示在 HTML 的可滚动部分内 问题陈述 表格标题在垂直滚动时未固定 标题显示在 HTML 的可滚动部分之外 当标题位置固定时 我看过很多帖子 但找
  • 带有图像和分隔符的完全对齐的水平菜单

    I would like to achieve this fully justified horizontal menu 对齐是通过 Flexbox 完成的并且有效 但是我也无法使分隔的中点对齐 它们是通过伪类使用 css content
  • 解决 SML/NJ 编译管理器中的库冲突

    我正在使用 SML NJ 110 79 其中包括对 Successor ML 项目定义的新结构的支持 其中 Fn https github com SMLFamily BasisLibrary wiki 2015 005 Addition
  • 如何访问小部件的属性

    我是 Yii 框架的新手 我正在尝试访问小部件的属性 比如说 CMenu 我想更改一些公共属性的值 如 activeCssClass firstItemCssClass lastItemCssClass htmlOptions 等 那么你怎
  • 如何在 sveltekit 应用程序中将菜单项设置为活动状态

    我一直在开发 sveltekit 应用程序 最近我的主导航菜单遇到了问题 当加载或刷新应用程序时 与当前 URL 对应的当前菜单项不会设置为活动状态 即菜单项 Home 的 URL 为 我很难在网上找到任何有用的东西来演示如何设置它 但我有
  • BND 将相同的包放入manifest.mf 的导出和导入部分

    我有一个 Vaadin 应用程序 我正在尝试使用 Maven BND 将其构建为一组 OSGI 包 我无法将捆绑包部署到 Apache Felix 因为某些依赖项无法解决 Apache Felix 抱怨找不到捆绑包 A 所需的包 XYZ 尽
  • 如何降级旧版 Android 中的 java.time 代码?

    我有这个简洁的代码 它生成两个日期之间的天数列表 然后是当天的日期 以及它在列表中的位置 最重要的是 所有日期都采用相同的格式 这使得很容易比较它们 Create list of days String s 2018 08 28 Strin