我想将日期格式从Sun Apr 10 07:05:45 MDT 2017
格式化为2017-04-10T07:05:45.24Z
。日期格式解析错误Java
我使用了以下内容:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE-LLL-dd H:mm:sszuuuu");
formatter.parse(date);
日期是在上面给出的格式。
但我得到索引3的解析错误
我想将日期格式从Sun Apr 10 07:05:45 MDT 2017
格式化为2017-04-10T07:05:45.24Z
。日期格式解析错误Java
我使用了以下内容:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE-LLL-dd H:mm:sszuuuu");
formatter.parse(date);
日期是在上面给出的格式。
但我得到索引3的解析错误
什么是“L”?尝试月份缩写“MMM”:
DateTimeFormatter formatter = DateTimeFormatter
.ofPattern("EEE-MMM-dd H:mm:sszuuuu");
从DateTimeFormatter文档:M/L月份数/文本7; 07; 7月;七月; J。但我尝试MMM,仍然得到解析错误 – Vic
存在多个问题。正确的模式是"EEE MMM dd HH:mm:ss z uuuu"
见本示例code run live at IdeOne.com。
String input = "Mon Apr 10 07:05:45 MDT 2017" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z uuuu" , Locale.US);
ZonedDateTime zdt = ZonedDateTime.parse(input , f);
zdt.toString():2017-04-10T07:05:45-06:00 [美国/丹佛]
好的,这里是我改变了:新日期是'Fri Apr 07 08:21:19 MDT 2017'并调整格式化为'“EEE MM dd HH:mm:ss z uuuu“' – Vic
还有一个提示:总是指定一个'Locale'。用于确定(a)用于翻译日期名称,月份名称等的人类语言,以及(b)用于确定缩写,大写,标点符号,分隔符等问题的文化规范。 –
尽量避免在第一位置,如果在这样的麻烦的格式所有可能的。避免使用3-4字母的伪时区缩写,例如“MDT”或“EST”或“IST”,因为它们*不是真正的时区,不是标准化的,甚至不是唯一的(!)。以“大陆/地区”格式指定[适当时区名称](https://en.wikipedia.org/wiki/List_of_tz_zones_by_name),例如['America/Montreal'](https://en.wikipedia .org/wiki/America/Montreal),['Africa/Casablanca'](https://en.wikipedia.org/wiki/Africa/Casablanca)或'America/Denver'。 –