日期功能是微调秒,其中秒00

问题描述 投票:2回答:3
OffsetDateTime odtB = OffsetDateTime.parse("2019-02-02T13:55:00Z");
odtB.toString()

打印2019-02-02T13:55作为输出。至于因为这个我转换功能的抛出错误!

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM\''YY HH:mm aa");
String parsedDate = odtB.format(otdB);

如何从修剪秒关机时秒00停止OffsetDateTime或任何其它的Java DateTime类?

java datetime java-8 date-conversion parseexception
3个回答
3
投票

在java8,你不需要任何SimpleDateFormat多,它的麻烦。

我建议使用ISO_OFFSET_DATE_TIME

所述ISO日期 - 时间格式化器,用于格式化或解析日期时间有偏移,例如“2011-12-03T10:15:30 + 01:00”。

例:

import java.util.*;
import java.time.*;
import java.time.format.*;

public class HelloWorld{

     public static void main(String []args){
        OffsetDateTime odtB = OffsetDateTime.parse("2019-02-02T13:55:00Z");
        DateTimeFormatter f = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
        System.out.print(f.format(odtB)); // 2019-02-02T13:55:00Z
     }
}

1
投票

SimpleDateFormat是从使用日期的老旧方式。它也不是线程安全的,有很多其他的问题。换句话说不使用它。您需要使用DateTimeFormatter请阅读的javadoc(提供的链接)。它给出了详细的解释如何使用它。但是你的问题的原因是,在您的格式掩盖你缺少占位符秒,因此,当您的STRING秒它不与您的格式一致。更改为dd-MMM-YY HH:mm:ss aa的“SS”重点格式 - 缺少秒占位符,它会工作


0
投票

如果您使用java.time.LocalDateTime(你应该从Java 8),你可以使用不同的DateTimeFormatters,您可以配置(给他们一个模式),不修剪尾随零。使用你的约会String有小幅调整模式请看下面的例子:

LocalDateTime ldt = LocalDateTime.parse("2019-02-02T13:55:00Z", DateTimeFormatter.ISO_DATE_TIME);
System.out.println(ldt.format(DateTimeFormatter.ofPattern("dd-MMM\''YY HH:mm:ss")));

这将打印02-Feb'19 13:55:00,它希望是你想要的。

© www.soinside.com 2019 - 2024. All rights reserved.