JAVA - 将字符串日期解析为长

JAVA - Parse String date to long

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 已过时且容易出错。建议完全停止使用它们并切换到 modern 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

ONLINE DEMO

请注意,现代日期时间 API 基于 ISO 8601 并且不需要明确使用 DateTimeFormatter 对象,只要日期时间字符串符合 ISO 8601个标准。

Trail: Date Time.

了解有关现代日期时间 API 的更多信息

出于任何原因,如果您想使用 SimpleDateFormat:

使用以下格式:

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

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


* 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查Java 8+ APIs available through desugaring. Note that Android 8.0 Oreo already provides support for java.time