2024-01-01T00:00:00.000Z
我想得到这个字符串在毫秒(长)我试着:
long res = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").parse(createdAt).getTime();
但是它不工作。
java.time
java.util
Date-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
文档,了解Z
和X
之间的区别。
*如果你正在为一个Android项目工作,你的Android API级别仍然不兼容Java-8,检查Java 8+可用的API。注意Android 8.0 Oreo已经提供了对java.time
的支持。