Java 时间转换的问题

d0 = "2018-01-01 00:00:00";
SimpleDateFormat formate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1 = (Date) formate.parseObject(d0);
String result =  DateUtils.formatDate(d1, "yyyy-MM-dd hh:mm:ss");
System.out.println(result);

为什么返回的是2017-12-31 04:00:00
???

补充:

DateUtils.formatDate 

\apache\httpcomponents\httpclient\4.5.1\httpclient-4.5.1.jar

里面的方法:

public static String formatDate(Date date, String pattern) {
    Args.notNull(date, "Date");
    Args.notNull(pattern, "Pattern");
    SimpleDateFormat formatter = DateUtils.DateFormatHolder.formatFor(pattern);
    return formatter.format(date);
}
阅读 2.2k
3 个回答

clipboard.png
如图,DateUtils用的也是SimpleFormat,但是它设置了时区和中国的时间相差8个小时
至于hh和HH的区别是一个12小时进制,一个是24小时进制

你把DateUtils.formatDate的方法贴一下
表面看的话,DateUtils.formatDate(d1, "yyyy-MM-dd hh:mm:ss");hh应该大写的;
另外,formate.parseObject应该改为formate.parse

好好看看API 看看HhMm都代表什么

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题