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类?
在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
}
}
SimpleDateFormat
是从使用日期的老旧方式。它也不是线程安全的,有很多其他的问题。换句话说不使用它。您需要使用DateTimeFormatter请阅读的javadoc(提供的链接)。它给出了详细的解释如何使用它。但是你的问题的原因是,在您的格式掩盖你缺少占位符秒,因此,当您的STRING秒它不与您的格式一致。更改为dd-MMM-YY HH:mm:ss aa
的“SS”重点格式 - 缺少秒占位符,它会工作
如果您使用java.time.LocalDateTime
(你应该从Java 8),你可以使用不同的DateTimeFormatter
s,您可以配置(给他们一个模式),不修剪尾随零。使用你的约会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
,它希望是你想要的。