Java 用“解析日期”;yyyy MM dd hh:MM:ss“;图案
我面临着“yyyy-MM-dd hh:MM:ss”日期解析模式的奇怪行为。 下面是我的代码Java 用“解析日期”;yyyy MM dd hh:MM:ss“;图案,java,date,simpledateformat,Java,Date,Simpledateformat,我面临着“yyyy-MM-dd hh:MM:ss”日期解析模式的奇怪行为。 下面是我的代码 public static void main(String[] args) throws Exception { System.out.println(parseDate("2018-08-16 11:00:00")); System.out.println(parseDate("2018-08-16 12:00:00")); System.out
public static void main(String[] args) throws Exception {
System.out.println(parseDate("2018-08-16 11:00:00"));
System.out.println(parseDate("2018-08-16 12:00:00"));
System.out.println(parseDate("2018-08-16 13:00:00"));
}
public static Date parseDate(String date) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return sdf.parse(date);
}
我得到以下输出
2018年8月16日星期四11:00:00 UTC
2018年8月16日星期四00:00:00 UTC
2018年8月16日星期四13:00:00 UTC
我不明白“2018-08-16 12:00:00”的第二个输出为什么说是2018年8月16日星期四00:00:00 UTC,而不是2018年8月16日星期四12:00:00 UTC
查看文档中的日期解析模式。上面说
小时->上午/下午的小时数(1-12)
有人能解释一下吗?
期待您的光临。希望这对您有所帮助
public static void main(String[] args) throws Exception {
System.out.println(parseDate("2018-08-16 11:00:00 AM"));
System.out.println(parseDate("2018-08-16 12:00:00 PM"));
System.out.println(parseDate("2018-08-16 13:00:00 AM"));
}
public static Date parseDate(String date) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
return sdf.parse(date);
}
输出
2018年8月16日星期四11:00:00 IST
2018年8月16日星期四12:00:00 IST
2018年8月16日星期四13:00:00 IST
您应该使用H
代替hh
,用于一天中的小时(0-23)
:
TestP:
输出:
文档:您有以下行的更改
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
到
小时日期格式如下所示
kk :- Hours in 1-24 format
hh :- hours in 1-12 format
KK :- hours in 0-11 format
HH :- hours in 0-23 format
没有
am
/pm
值,什么是12
?我还建议您应该使用Java 8中引入的新日期/时间尝试引入am/PMO,或者将格式化程序改为使用H
。此外,如果您使用SimpleDateFormat
(和相同的格式)来格式化
,结果将打印2018-08-16 12:00
:/-记住,Date#toString
有自己的内部机制来格式化它的表示形式,我建议您避免使用SimpleDataFormat
类。它不仅早已过时,而且还出了名的麻烦。今天,我们在。AddRotatedAnnotation
?仅供参考,非常麻烦的旧日期时间类,如,java.text.simpleDataFormat
,现在被java 8和更高版本中内置的类所取代。看见
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
DateFormat writeFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
kk :- Hours in 1-24 format
hh :- hours in 1-12 format
KK :- hours in 0-11 format
HH :- hours in 0-23 format