“2017-03-29 18:17:12+00”的日期格式是什么
What is the date format for "2017-03-29 18:17:12+00"
我想构造日期“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”。
如何获得这个?格式是什么?
请提供您的意见
尝试 X
即 ISO 8601 time zone
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ssX";
如果你使用JDK 8 java.time
API,你会默认得到想要的格式(ISO 8601)
。
System.out.println(OffsetDateTime.now(ZoneId.systemDefault())); // 2017-05-26T16:20:42.821+05:30
我会确保始终使用 ISO8601。
正如 shazin 所说,您可以用 X 替换 Z 来执行接受日期。
另外,我建议像这样使用 OffsetDateTime API:
OffsetDateTime time = OffsetDateTime.parse( YOUR_DATE_STRING );
这将为您提供一个可用于正确时区的 OffsetDateTime 对象。此外,如果您想将输入转换为您当地的时区或 UTC 时区,您可以使用
time.atZoneSameInstant( ZoneId.systemDefault() );
请注意,并非所有时区都与 UTC 相差整数倍
小时。所以当创建标准时,没有人认为会有
要求将时移打印为仅 2 位数字。
可能这就是为什么 "Z" 作为时移占位符被转换为
“+”或“-”字符,只有 四个 数字。
我认为,解决方案是:
- 生成带有 4 位时移部分的 data/time 字符串,
- 截去最后 2 位数字。
但请注意,在某些情况下,例如阿富汗 (4 小时 30 米)
或澳大利亚中部(10 小时 30 分钟),此 2 位时移将不准确。
尝试在格式字符串中使用 X
而不是 Z
。
我想构造日期“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”。
如何获得这个?格式是什么?
请提供您的意见
尝试 X
即 ISO 8601 time zone
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ssX";
如果你使用JDK 8 java.time
API,你会默认得到想要的格式(ISO 8601)
。
System.out.println(OffsetDateTime.now(ZoneId.systemDefault())); // 2017-05-26T16:20:42.821+05:30
我会确保始终使用 ISO8601。
正如 shazin 所说,您可以用 X 替换 Z 来执行接受日期。
另外,我建议像这样使用 OffsetDateTime API:
OffsetDateTime time = OffsetDateTime.parse( YOUR_DATE_STRING );
这将为您提供一个可用于正确时区的 OffsetDateTime 对象。此外,如果您想将输入转换为您当地的时区或 UTC 时区,您可以使用
time.atZoneSameInstant( ZoneId.systemDefault() );
请注意,并非所有时区都与 UTC 相差整数倍 小时。所以当创建标准时,没有人认为会有 要求将时移打印为仅 2 位数字。
可能这就是为什么 "Z" 作为时移占位符被转换为 “+”或“-”字符,只有 四个 数字。
我认为,解决方案是:
- 生成带有 4 位时移部分的 data/time 字符串,
- 截去最后 2 位数字。
但请注意,在某些情况下,例如阿富汗 (4 小时 30 米) 或澳大利亚中部(10 小时 30 分钟),此 2 位时移将不准确。
尝试在格式字符串中使用 X
而不是 Z
。