Java 将时间转换为 iso_instant

标签 java time date-conversion

我有像 Thu Feb 04 21:25:12 CET 2021Sat Oct 03 11:57:00 CEST 2020 这样的字符串 我需要将其转换为 ISO_Instant 时间,但我的代码不起作用。

我希望有人能帮助我。

我的代码:

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz uuuu");
Instant ist = OffsetDateTime.parse("Thu Feb 04 19:03:27 CET 2021", dtf).toInstant();

最佳答案

您的日期时间字符串具有时区 ID 而不是时区偏移量,因此您应该将其解析为 ZonedDateTime。另外,Never use SimpleDateFormat or DateTimeFormatter without a Locale .

import java.time.Instant;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz uuuu", Locale.ENGLISH);

        Instant instant = ZonedDateTime.parse("Thu Feb 04 19:03:27 CET 2021", dtf).toInstant();
        System.out.println(instant);

        instant = ZonedDateTime.parse("Sat Oct 03 11:57:00 CEST 2020", dtf).toInstant();
        System.out.println(instant);
    }
}

输出:

2021-02-04T18:03:27Z
2020-10-03T09:57:00Z

了解有关 java.time 的更多信息,modern date-time API * 来自 Trail: Date Time .


* 无论出于何种原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport它将大部分 java.time 功能反向移植到 Java 6 和 7。如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaringHow to use ThreeTenABP in Android Project .

关于Java 将时间转换为 iso_instant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67602140/

相关文章:

perl - 将 999 年之前的时间转换为纪元

excel - bb 或 bbbb 在 EN-US TEXT 函数或自定义数字格式掩码中代表什么?

java - 为什么 getWindow() 无法解决?

java - 无法使用 Maven 编译简单的 Java 10/Java 11 项目

java - Apache CXF Web 服务。服务器初始化缓慢

Java Files.getLastModifiedTime 返回意外结果

java - 读取 HDFS 文件拆分

0 到 24 之间的 Java 时间

c++ - 将公历日期转换为儒略日期,然后再返回(带时间)

c# - Unix 时间戳(以秒为单位)到 C# DateTime 不是 UTC