我正面临“ 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.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年UTC星期四8月16日11:00:00
UTC 2018年8月16日00:00:00
2018年世界标准时间8月16日13:00:00
我不明白第二个输出为何表示“ 2018-08-16 12:00:00”的说法,即UTC 2018年8月16日星期四00:00:00而不是UTC 2018年8月16日星期四12:00:00。
查看here中的日期解析模式文档。它说
h->上午/下午的小时数(1-12)
有人可以解释一下吗? 谢谢您。
答案 0 :(得分:0)
希望这会有所帮助
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);
}
输出
Thu Aug 16 11:00:00 IST 2018
Thu Aug 16 12:00:00 IST 2018
Thu Aug 16 13:00:00 IST 2018
答案 1 :(得分:0)
对于hh
,您应该使用Hour in day (0-23)
而不是public class TestP{
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"));
System.out.println(parseDate("2018-08-16 23:00:00"));
}
public static Date parseDate(String date) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd H:mm:ss");
return sdf.parse(date);
}
}
:
Thu Aug 16 11:00:00 CLST 2018
Thu Aug 16 12:00:00 CLST 2018
Thu Aug 16 13:00:00 CLST 2018
Thu Aug 16 23:00:00 CLST 2018
{{1}}
答案 2 :(得分:0)
您已更改波纹管
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