无法分析缺少分钟的日期



我正在尝试解析一个不包含分钟2019-10-12T07Z的日期-时间字符串。

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class App 
{
public static void main( String[] args )
{
// 2019-10-12T07:00:00Z
OffsetDateTime offSetDateTime = OffsetDateTime.parse("2019-10-12T07Z");
System.out.println(offSetDateTime.format(DateTimeFormatter.ISO_DATE_TIME));

}
}

当我运行上面的代码时,它抛出以下异常堆栈跟踪

Exception in thread "main" java.time.format.DateTimeParseException: Text '2019-10-12T07Z' could not be parsed at index 13
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.OffsetDateTime.parse(OffsetDateTime.java:402)
at java.time.OffsetDateTime.parse(OffsetDateTime.java:387)
at com.test.offset.offset.App.main(App.java:16)

预期输出

2019-10-12T07:00:00Z

知道我该怎么办吗?

您必须创建表示时间和偏移量的自定义DateTimeFormatter。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HHX");
OffsetDateTime odt = OffsetDateTime.parse("2019-10-12T07Z",formatter) ;
System.out.println( odt );  //2019-10-12T07:00Z

查看Ideone.com.上运行的代码

2019-10-12T07:00Z

如果要显示秒数,请提取一个Instant以使用其toString方法。

Instant instant = odt.toInstant() ;
System.out.println( instant ) ;  // 2019-10-12T07:00:00Z

2019-10-12T07:00:00Z

当我需要日期+时间戳时,我通常会这样做

String dateFile = new SimpleDateFormat("MM-dd-yyyy").format(new java.util.Date());
String timeFile = new SimpleDateFormat("HH-mm").format(new java.util.Date());

相关内容

  • 没有找到相关文章

最新更新