android-studio - JAVA - 将字符串日期解析为长
问题描述
2024-01-01T00:00:00.000Z
我想在 ms(long) 中得到这个字符串,我试过:
long res = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").parse(createdAt).getTime();
但它不起作用。
解决方案
java.time
java.util
日期时间 API 及其格式化 API已SimpleDateFormat
过时且容易出错。建议完全停止使用它们并切换到现代 Date-Time API *。
使用java.time
现代日期时间 API 的解决方案:
import java.time.Instant;
public class Main {
public static void main(String[] args) {
long res = Instant.parse("2024-01-01T00:00:00.000Z").toEpochMilli();
System.out.println(res);
}
}
输出:
1704067200000
请注意,现代日期时间 API 基于ISO 8601DateTimeFormatter
,只要日期时间字符串符合 ISO 8601 标准,就不需要明确使用对象。
从Trail: Date Time了解有关现代日期时间 API 的更多信息。
出于任何原因,如果您想使用SimpleDateFormat
:
使用以下格式:
yyyy-MM-dd'T'HH:mm:ss.SSSXXX
检查文档以了解和SimpleDateFormat
之间的区别。Z
X
* 如果您正在为一个 Android 项目工作,并且您的 Android API 级别仍然不符合 Java-8,请通过 desugaring 检查可用的 Java 8+ API。请注意,Android 8.0 Oreo 已经提供对java.time
.
推荐阅读
- angular - 如何从服务器端以角度呈现文件(图像)
- html - 可以在静态网站上使用 nodejs 进行表单提交吗?
- javascript - 使用 jQuery 删除没有特定类的 DOM 元素
- python - 动态更新最后一列标题 - 熊猫
- javascript - PeerJS 在 Chrome 中连接,但在其他浏览器中不连接
- http-status-code-403 - 浏览器中的http状态码为200,但http状态检查器中的http状态码为403,为什么?
- sql - 折叠 Hive 中的行并保留非 Null 值
- java - 在纱线模式下使用 Spark 的 Springboot
- kubernetes-helm - 在 Flux 中配置 sops/helm-secrets
- python - 这部分城市引导技能怎么获得?亚马逊sdk python