" 2017-03-29 18:17:12 + 00"的日期格式是什么?

时间:2017-05-26 10:40:41

标签: java date simpledateformat date-format date-formatting

我想建立日期" 2017-03-29 18:17:12 + 00"但是在使用格式时我得到以下格式

public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ssZ";

2017-02-28 11:12:31+0000

我需要的格式为" 2017-03-29 18:17:12 + 00"。

如何获得这个?格式是什么?

请提供您的意见

5 个答案:

答案 0 :(得分:4)

尝试{{1}}

{{1}}
{{1}}

答案 1 :(得分:1)

在格式字符串中尝试XZ

答案 2 :(得分:0)

如果您使用JDK 8 java.time API,默认情况下您将获得所需的格式(ISO 8601)

System.out.println(OffsetDateTime.now(ZoneId.systemDefault())); // 2017-05-26T16:20:42.821+05:30

答案 3 :(得分:0)

我会确保始终使用ISO8601。

正如shazin所说,你可以用X替换你的Z来接受日期。

作为补充,我建议使用OffsetDateTime API,如下所示:

OffsetDateTime time = OffsetDateTime.parse( YOUR_DATE_STRING );

这将为您提供一个OffsetDateTime对象,您可以使用该对象到正确的时区。此外,如果要将输入转换为本地时区或UTC时区,可以使用

time.atZoneSameInstant( ZoneId.systemDefault() );

答案 4 :(得分:0)

请注意,并非所有时区都从UTC移位整数 小时。因此,当标准创建时,没有人认为会有 要求打印时移仅为2位数。

这可能就是为什么“Z”作为时移占位符转换为 “+”或“ - ”字符,只有四个数字。

我认为,解决方案是:

  • 生成带有4位时移部分的数据/时间字符串
  • 切掉最后两位数字。

但请注意,在某些情况下,例如阿富汗(4小时30分钟) 或澳大利亚中部(10小时30分钟),这个2位数的时移将是不准确的。