我从网络服务获取日期作为字符串
它们采用以下字符串格式
"2016-04-12 12:18:11.000 EDT"
文档不是很好,但我想这是一些标准的日期格式
你认识这种格式吗?
我怎样才能最轻松地将其解析为Date
?
答案 0 :(得分:3)
我认为它是yyyy-MM-dd HH:mm:ss.SSS zzz
或yyyy-dd-MM HH:mm:ss.SSS zzz
从你的例子2016-04-12,它可以是2016年4月12日或2016年12月4日
考虑yyyy-MM-dd HH:mm:ss.SSS zzz
DateFormat gmtFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS zzz");
TimeZone gmt = TimeZone.getTimeZone("GMT");
gmtFormat.setTimeZone(gmt);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
Date dd = df.parse("2016-04-12 12:18:11.000 EDT");
System.out.println( gmtFormat.format(dd));
输出: 2016-04-12 06:48:11.000 GMT
答案 1 :(得分:2)
你可以这样做:
String date = "2016-04-12 12:18:11.000 EDT";
DateFormat parseFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z", Locale.US);
Date d = parseFormat.parse(date);
如果您的系统使用其他语言,则区域设置非常重要。
答案 2 :(得分:1)
使用此模式:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z");
y Year (e.g. 12 or 2012). Use either yy or yyyy.
M Month in year. Number of M's determine length of format (e.g. MM, MMM or MMMMM)
d Day in month. Number of d's determine length of format (e.g. d or dd)
H Hour of day, 0-23 (normally HH)
m Minute in hour, 0-59 (normally mm)
s Second in minute, 0-59 (normally ss)
S Millisecond in second, 0-999 (normally SSS)
z Time Zone