simpledateformat to long 24小时制问题

进行基于时间的条件查询时,发现一个bug,修复了好久,才发现dateformat转long型存在一个很严重的进制问题。
如果是12进制parse之后,12-24点之间的时间字符串会被自动转成0-12点之间所对应的long型,直入正题,看代码陷阱(小写hh是12进制,大写HH是24进制):

  1. java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”,java.util.Locale.US);   
  2. java.util.Date startTime = sdf.parse(“2011-08-07 12:31:56”);   
  3. long ltime = startTime.getTime();   
  4. System.out.println(“Test1:”+ltime/1000);   
  5. sdf = new java.text.SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”,java.util.Locale.US);   
  6. startTime = sdf.parse(“2011-08-07 12:31:56”);   
  7. ltime = startTime.getTime();   
  8. System.out.println(“Test2:”+ltime/1000);  

输出结果则很清晰,截然不同:

  1. Test1:1312648316  
  2. Test2:1312691516  

 

关于Java 各种格式的时间解析问题,参看:http://jacoxu.com/?p=451

发表评论

电子邮件地址不会被公开。 必填项已用*标注