为了观察,我刚刚添加了我的代码片段。它适用于具有时区偏移的格式日期,但无法解析格式化的内容。
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss.SZ");
Date javaDate = new Date();
String stringDate = format.format(javaDate);
System.out.println("Date: " + stringDate);
try {
javaDate = format.parse(stringDate); //reverse of format
} catch (ParseException e) {
e.printStackTrace();
}
任何直截了当的方式?考虑20140916130644.236+0600
是您的日期字符串,您应该使用时区解析它的日期格式是什么?您可以轻松解析yyyyMMddHHmmss.S
模式而.
不是事实,主要事实是Z
,而不是格式化。
答案 0 :(得分:3)
由于.
无效,请将其删除并尝试使用
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSZ");
或者如果你想拥有'。'然后像这样使用
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss'.'SZ");
答案 1 :(得分:1)
更改
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss.SZ");
到
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss'.'SZ");
日期和时间格式由日期和时间模式字符串指定。 在日期和时间模式字符串中,来自' A'的未加引号字母到了' Z' 并且来自'到' z'被解释为代表的模式字母 日期或时间字符串的组成部分。文字可以引用使用 单引号(')以避免解释。
答案 2 :(得分:1)
'T'
和'Z'
在此被视为常量。你需要传递没有引号的Z.此外,您需要在输入字符串中指定时区。
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
答案 3 :(得分:0)
直接的方式是日期解析格式应该看起来像yyyyMMddHHmmss.SSSZ
,格式化格式和解析格式可能不同。格式化格式(yyyyMMddHHmmss.SZ
)不应用于解析。解析格式(yyyyMMddHHmmss.SSSZ
)可用于格式化。为了避免意外的结果/异常,最好使用yyyyMMddHHmmss.SSSZ
格式进行格式化/解析,而不是yyyyMMddHHmmss.SZ