java - 转换日期中的“使用excel方法”数值 - java
问题描述
我有一个整数,当我放入 Google 表格时,它代表日期 1911 年 14 月 10 日(整数值为 4305)。
我需要在我的代码中使用 Java 进行同样的转换。因此,我将有一个整数数组下降 1 倍(如 4305、4304、4303...),我需要将这些整数转换为日期(1911 年 14 月 10 日、1911 年 10 月 13 日、 12/10/1911...) 使用与 excel/sheets 相同的方法。
有任何想法吗?
谢谢
解决方案
LocalDate msBaseDate = LocalDate.of(1899, Month.DECEMBER, 30);
int[] integers = { 4305, 4304, 4303 };
for (int integerValue : integers) {
LocalDate date = msBaseDate.plusDays(integerValue);
System.out.println(date);
}
此片段的输出是:
1911-10-14 1911-10-13 1911-10-12
Excel 和其他 Microsoft 产品以及可能的其他软件也使用 1899 年 12 月 30 日作为基准日期,并将日期表示为自该日期以来的天数。因此,只需将数字添加到该日期即可。我正在使用LocalDate
现代 Java 日期和时间 API java.time。
问题:我可以在 Android 上使用 java.time 吗?
是的,java.time 在较旧和较新的 Android 设备上运行良好。它只需要至少Java 6。
- 在 Java 8 及更高版本以及更新的 Android 设备(从 API 级别 26 开始)中,现代 API 是内置的。
- 在 Java 6 和 7 中获得 ThreeTen Backport,现代类的后向端口(ThreeTen 用于 JSR 310;请参阅底部的链接)。
- 在(较旧的)Android 上使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。并确保从
org.threeten.bp
子包中导入日期和时间类。
链接
- Oracle 教程:日期时间解释如何使用 java.time。
- Java 规范请求 (JSR) 310,
java.time
第一次描述的地方。 - ThreeTen Backport 项目,
java.time
Java 6 和 7 的反向移植(ThreeTen for JSR-310)。 - ThreeTenABP , ThreeTen Backport 的 Android 版
- 问题:如何在Android项目中使用ThreeTenABP,有非常详尽的解释。
推荐阅读
- elasticsearch - Elasticsearch,仅在唯一时索引新文档(两个字段构成唯一索引)
- python - 为什么 Tkinter 窗口打开这么慢?
- android - 为什么 android NFC 可以读取一些非接触式 emv 信用卡而不是其他的?
- material-ui - Material UI 对话框 - 为什么在使用 NVDA 激活的键盘重新打开对话框时焦点会移动?
- django - 无法在 Django 中加载静态文件:
- javascript - JS/JQuery - 让展开/折叠工作出现问题
- postgresql - Postgres 错误游标“result_set_a”在事务中不存在
- c++ - 返回类似 flat_hash_map 可以被多个函数使用的正确方法是什么?
- javascript - Puppeteer:chrome dev 和 puppeteer 的结果不同
- c# - 使用带有泛型的接口类型作为容器类型将实现的实例映射到字典