如何将 dd/MM/yyyy HH:mm:ss 转换为 offsetdatetime - java

How to convert dd/MM/yyyy HH:mm:ss to offsetdatetime - java

我升级到:

DateTimeFormatter dtf = DateTimeFormatter.ofPattern ("dd/MM/yyyy HH:mm:ss");
org.threeten.bp.LocalDateTime _date = org.threeten.bp.LocalDateTime.parse ("10/19/2020 18:00:47", dtf);

并得到: 2020-10-19T18:00:47 但我仍然没有符合标准的出口:2020-10-19T18:00:47.868-03:00

您的 DateTimeFormatter 有 ("dd/MM/yyyy HH:mm:ss"),但您使用了“10/19/2020 18:00:47”。 月份不能是 19。

将您的输入更改为“19/10/2020 18:00:47”,它应该可以工作。

org.threeten.bp.format.DateTimeFormatter dtf = org.threeten.bp.format.DateTimeFormatter.ofPattern ("dd/MM/yyyy HH:mm:ss");
org.threeten.bp.LocalDateTime _date = org.threeten.bp.LocalDateTime.parse("19/10/2020 18:00:47", dtf);
System.out.println(_date);

用户 3197884 之前接受的答案是正确且信息丰富的 (+1)。我觉得它没有完全回答所问的问题,所以我想将转换贡献给 org.threeten.bp.OffsetDateTime.

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern ("MM/dd/yyyy HH:mm:ss");
    OffsetDateTime date = LocalDateTime.parse("10/19/2020 18:00:47", dtf)
            .atZone(ZoneId.of("America/Argentina/Buenos_Aires"))
            .toOffsetDateTime();
    System.out.println(date);

输出是你要求的:

2020-10-19T18:00:47-03:00

由于您的字符串中没有偏移量或时区,我们需要以其他方式提供偏移量。我不敢说在您的特定情况下究竟哪种方法最好,但一种非常常见的好方法是提供为字符串假定的时区。我刚选了一个,请输入你自己的时区。

我没有在字符串中交换 1019,而是在格式模式中交换了 ddMM。显然两者都有效。