Her*_*ang 4 java formatter simpledateformat
我试图通过使用java.text.SimpleDateFormat将String格式的日期转换为java.util.Date,但是它没有给我正确的输出.请帮忙!
我的输入是由Django date生成的:ex."2014-01-20T07:17:06.150995 + 00:00"
但是,我得到了"Mon Jan 20 15:19:36 GMT + 08:00 2014"而不是"Mon Jan 20 15:17:06 GMT + 08:00 2014"
这是我的测试代码:
String s = "2014-01-20T07:17:06.150995+00:00";
SimpleDateFormat sdf;
String fmt = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZZZZ";
sdf = new SimpleDateFormat(fmt, Locale.US);
String result = "";
try {
Date date = sdf.parse(s);
Log.d(Constants.LOG_TAG, date.toString());
result = date.toString();
} catch (Exception e) {
Log.d(Constants.LOG_TAG, "date formatting error" + e.getMessage());
}
Log.d(Constants.LOG_TAG, "date test >> " + result);
Run Code Online (Sandbox Code Playgroud)
如您所见,您的两个日期相差2.5分钟.
发生这种情况是因为您将微秒解析为毫秒.这将为您的结果添加150000毫秒,或2.5分钟.
没有标准的方法来解析使用微秒的日期字符串,SimpleDateFormat如果您不能以不同的格式获取源字符串,则必须自己完成.
如果日期始终采用这种格式,您可以执行以下操作:
String dateWithoutMicros = s.substring(0, s.length() - 9) + s.substring(s.length() - 6);
Date date = sdf.parse(dateWithoutMicros);
Run Code Online (Sandbox Code Playgroud)