SimpleDateFormat format时分秒均为0的日期多了12个小时

2022-03-28 19:12:36 浏览数 (1)

直接看下面的代码:

代码语言:javascript复制
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1 = sdf.parse("9999-12-31 00:00:00");
System.out.println(sdf.format(d1));
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(sdf1.format(d1));

程序输出结果如下:

代码语言:javascript复制
9999-12-31 00:00:00
9999-12-31 12:00:00

可以看到,通过yyyy-MM-dd hh:mm:ss样式format出来的日期是12小时制,而HH:mm:ss则是24小时制!!

下面是原因:

代码语言:javascript复制
/**
  SimpleDateFormat函数语法:
 
  G 年代标志符
  y 年
  M 月
  d 日
  h 时 在上午或下午 (1~12)
  H 时 在一天中 (0~23)
  m 分
  s 秒
  S 毫秒
  E 星期
  D 一年中的第几天
  F 一月中第几个星期几
  w 一年中第几个星期
  W 一月中第几个星期
  a 上午 / 下午 标记符 
  k 时 在一天中 (1~24)
  K 时 在上午或下午 (0~11)
  z 时区
 */

注意:

h代表的时间范围是1-12,H代表的范围为0-23

0 人点赞