代码如下,就是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