以下代码给出了解析日期为“Wed Jan 13 00:00:00 EST 2010” 而不是“Wed June 13 00:00:00 EST 2010”。任何想法都非常赞赏。
SimpleDateFormat sf = new SimpleDateFormat("yyyy-mm-dd'T'HH:mm:ss");
String str = "2010-06-13T00:00:00";
Date date = sf.parse(str);
System.out.println(" Date " + date.toString());
答案 0 :(得分:50)
答案 1 :(得分:4)
问题是你使用'mm'作为月份而'mm'代表分钟。 以下是所有可用的日期格式,请阅读更多文档here。
Symbol Meaning Kind Example
D day in year Number 189
E day of week Text E/EE/EEE:Tue, EEEE:Tuesday, EEEEE:T
F day of week in month Number 2 (2nd Wed in July)
G era designator Text AD
H hour in day (0-23) Number 0
K hour in am/pm (0-11) Number 0
L stand-alone month Text L:1 LL:01 LLL:Jan LLLL:January LLLLL:J
M month in year Text M:1 MM:01 MMM:Jan MMMM:January MMMMM:J
S fractional seconds Number 978
W week in month Number 2
Z time zone (RFC 822) Time Zone Z/ZZ/ZZZ:-0800 ZZZZ:GMT-08:00 ZZZZZ:-08:00
a am/pm marker Text PM
c stand-alone day of week Text c/cc/ccc:Tue, cccc:Tuesday, ccccc:T
d day in month Number 10
h hour in am/pm (1-12) Number 12
k hour in day (1-24) Number 24
m minute in hour Number 30
s second in minute Number 55
w week in year Number 27
G era designator Text AD
y year Number yy:10 y/yyy/yyyy:2010
z time zone Time Zone z/zz/zzz:PST zzzz:Pacific Standard
答案 2 :(得分:1)
现代回答:
String str = "2010-06-13T00:00:00";
LocalDateTime dateTime = LocalDateTime.parse(str);
System.out.println("Date-time " + dateTime);
输出:
日期时间2010-06-13T00:00
我正在使用并推荐现代Java日期和时间API java.time
。我们甚至不需要一个明确的格式化器来进行解析。这是因为您的字符串是ISO 8601格式,这是java.time
类解析为默认值的国际标准。 java.time
于2014年问世。
虽然在2010年提出这个问题时,SimpleDateFormat
是我们解析日期和时间所用的,但是现在认为该类已经过时了,幸运的是,因为它也很麻烦。
如果您的字符串只包含日期而没有时间,请以完全相同的方式使用LocalDate
类(a duplicate question中提到了这一点)。
String dateStr = "2018-05-23";
LocalDate date2 = LocalDate.parse(dateStr);
System.out.println(date2);
2018年5月23日
链接: Oracle tutorial: Date Time解释如何使用java.time
。
答案 3 :(得分:0)
日期为06 07 2016的示例
*
您可以在这些格式之间使用逗号,句号,斜杠或连字符。
</p>