关于Java中的Date时间显示问题。

代码如下,就是String日期类转Date类后的打印,12点的时候显示的不是12点,而是0点,而13点显示的13点,如果说是12小时制,那么13—23都能显示是什么问题?

 public class CalendarTest1 {
    public static void main(String[] args) throws ParseException {
        String day = "1990-03-03 12:20";
        DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd hh:mm");
        Date date = dateFormat1.parse(day);
        System.out.println(date.toLocaleString());
    }
}

显示结果

因为12点的时候你没有指定上午或下午(AM or PM)会默认显示的上午就是0点
toLocaleString()描述此日期格式的本地化模式字符串。
如果你用的是中文环境的话:
eg:Date parse = new SimpleDateFormat("yyyy-MM-dd hh:mm a").parse("1996-06-19 12:42 下午");
我的是中文环境所以用的‘下午’
图片说明

如果你要13点显示1点就必须指定当前为上午还是下午
Date parse = new SimpleDateFormat("yyyy-MM-dd hh:mm a").parse("1996-06-19 13:42 下午");
System.out.println(parse.toLocaleString());
/*当前时间的12进制显示*/
String curreatTime = new SimpleDateFormat("yyyy-MM-dd hh:mm a").format(new Date());
System.out.println(curreatTime);
图片说明

建议使用JodaTime日期工具试试

            String day = "1990-03-03 12:20";
    DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    Date date = dateFormat1.parse(day);
    System.out.println(date.toLocaleString());


            -- ("yyyy-MM-dd HH:mm"); hh 12小时制 HH 24小时制

SimpleDateFormat是把时间装换成12小时制的,使用字符串打于12时就默认装换成24小时制了

yyyy-MM-dd hh:mm 是不是应该为yyyy-MM-dd HH:mm

HH大写的时候中午12点就显示12,hh小写的时候就是0,这是时间转化的一个坑

打印的时候使用的是toLocalString,你的时区是否正确呢?看着你这刚好差了8个小时

你要分清楚 hh,HH 有区别
不仅这个有区别 ,java获取当前时间是CST。
时间上有很多坑
分享一部有兴趣,可以瞅瞅,能避免少走一点坑,http://blog.csdn.net/kongjiea/article/details/44061117