JAVA -解析字符串日期为长


2024-01-01T00:00:00.000Z

我想得到这个字符串在毫秒(长)我试着:

long res = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").parse(createdAt).getTime();

但是它不工作。

java.time

java.utilDate-Time API及其格式化APISimpleDateFormat过时且容易出错。建议完全停止使用它们,切换到现代的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
<<p>

在线演示/kbd>请注意,现代Date-Time API是基于ISO 8601的,只要Date-Time字符串符合ISO 8601标准,就不需要显式地使用DateTimeFormatter对象。

Trail: Date Time了解更多关于现代Date-Time API的信息.

无论出于何种原因,如果您想使用SimpleDateFormat:

使用以下格式:

yyyy-MM-dd'T'HH:mm:ss.SSSXXX

查看SimpleDateFormat文档,了解ZX之间的区别。


*如果你正在为一个Android项目工作,你的Android API级别仍然不兼容Java-8,检查Java 8+可用的API。注意Android 8.0 Oreo已经提供了对java.time的支持。

相关内容

  • 没有找到相关文章

最新更新