SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");注意把hh改成HH。h代表12小时制的,把12点当成0点来处理了。H才是24小时制的。

解决方案 »

  1.   

    改成HH就对了,不过如果SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");表示12小时制,那么SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");是表示AM/PM的12小时制么?我看帮助文档是这么写的,为什么我这么写它会报ParsteException的错误?
    import java.text.*;
    import java.util.*;public class test{
    public static void main(String args[]){
            SimpleDateFormat bartDateFormat = new SimpleDateFormat(
                 "yyyy-MM-dd hh:mm:ss a");
                 
             String dt = "2004-03-01 11:30:20 PM";
             String dt2 = "2004-03-01 09:30:20 AM";
             Date now = new Date();
        try {
          Date date1 = bartDateFormat.parse(dt);
          Date date2 = bartDateFormat.parse(dt2);
       
          if (date1.compareTo(date2)>0){
            System.out.println (date1.getTime()-date2.getTime());
          }
          else{
          System.out.println ("false");         }
          
        }
        catch (Exception ex) {        System.out.println (ex);    }
        
            }
    }
      

  2.   

    String dt = "2004-03-01 11:30:20 下午";
    String dt2 = "2004-03-01 09:30:20 上午";
    或者
    SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a",Locale.US);
      

  3.   

    dt的值是标准的AM/PM格式,
    如果设SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a",Locale.US);
    为什么当dt = "2004-03-02 13:20:20 AM";时Date date1 = bartDateFormat.parse(dt);
    系统没有报错?应该是格式不对的啊
      

  4.   

    因为你的系统默认标准是简体中文,
    你没看清“或者”,
    也就是要么bartDateFormat不变,设置dt为"2004-03-01 11:30:20 下午",
    要么dt不变,把bartDateFormat设置为new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a",Locale.US)
      

  5.   

    我明白你的意思,我是保持dt不变设置SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a",Locale.US);
    但是dt = "2004-03-02 13:20:20 AM";时Date date1 = bartDateFormat.parse(dt);
    应该报PasteException的错误啊,因为13:20:20 AM并不符合AM/PM的12小时制
      

  6.   

    SimpleDateFormat.parse把"2004-03-02 13:20:20 AM"处理为:
    “2004-03-01 01:30:20 PM”
      

  7.   

    这样啊,那如果想检查dt = "2004-03-02 13:20:20 AM";的格式,该怎么办呢?
    请指教
      

  8.   

    楼主好耐心,
    bartDateFormat.setLenient(false);