【发布时间】:2017-12-21 13:53:44
【问题描述】:
我正在为一个日期字符串而苦苦挣扎,我需要解析成 java 的“日期”对象。 这是我到目前为止所得到的:
try {
String value = "2017-11-23T14:00:49.184000000Z";
String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS'Z'";
SimpleDateFormat parser = new SimpleDateFormat(pattern);
Date date = parser.parse(value);
} catch (ParseException e) {e.printStackTrace();}
它目前抛出一个 ParseException “Unparseable date”,我无法让它工作。
非常感谢任何帮助!
谢谢
【问题讨论】:
-
只有
999毫秒,所以你想添加纳秒是行不通的。您应该查看新的java.time包,并更喜欢DateTimeFormatter。 -
是的,Elliot 是对的,184000 毫秒(在 int 范围内)可能有效,但会增加日期的秒数、分钟数、小时数。
-
在您的值中,年份和第一个连字符之间有一个从左到右的不可见标记(Unicode 8206 或十六进制 200E)。这可以防止解析。字符串中总共有四个,每个连字符前一个,每个连字符后一个。幸运的是,您将它们粘贴到您的问题中,以便我们检测到它们!
-
很抱歉,链接问题的答案也无法处理您字符串中的控制字符。
-
@BasilBourque,它确实看起来那样。但是,ISO 8601 标准不包括在导致异常的问题的字符串中发现的不可见控制字符。 OP 需要摆脱这些,然后将受益于使用现代类。
标签: java simpledateformat