我现在希望将一个文本字符串解析为一个日期,我使用SimpleDateFormat转化,然后使用DateFormat显示这个日期:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
DateFormat dateFormat = DateFormat.getDateTimeInstance();
Date date = simpleDateFormat.parse("2005-2-12 12:30:00");
System.err.println(dateFormat.format(date));
这样输出结果是2005-2-12 12:30:00.
但是如果我将simpleDateFormat改为SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

解决方案 »

  1.   

    不好意思,没写好就提交了,事实是这样。
    我现在希望将一个文本字符串解析为一个日期,我使用SimpleDateFormat转化,然后使用DateFormat显示这个日期:
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    DateFormat dateFormat = DateFormat.getDateTimeInstance();
    Date date = simpleDateFormat.parse("2005-2-12 12:30:00");
    System.err.println(dateFormat.format(date));
    这样输出结果是2005-2-12 12:30:00.
    但是如果我将simpleDateFormat改为SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:MM:ss");输出结果就变成2007-6-12 12:00:00。为什么会这样呢。而且看来格式的年月日期时分秒的大小写一定要yMdHms这样的。
      

  2.   

    搂主,关于时间格式,你设置错了,从而导致不可预期的的时间:
    在java的时间格式的表述中:
    M   Month in year 
    m   Minute in hour 
    明白了吗?
      

  3.   

    jdk文档中是这样规定的:
    Letter  Date or Time Component  Presentation  Examples  
    G  Era designator  Text  AD  
    y  Year  Year  1996; 96  
    M  Month in year  Month  July; Jul; 07  
    w  Week in year  Number  27  
    W  Week in month  Number  2  
    D  Day in year  Number  189  
    d  Day in month  Number  10  
    F  Day of week in month  Number  2  
    E  Day in week  Text  Tuesday; Tue  
    a  Am/pm er  Text  PM  
    H  Hour in day (0-23)  Number  0  
    k  Hour in day (1-24)  Number  24  
    K  Hour in am/pm (0-11)  Number  0  
    h  Hour in am/pm (1-12)  Number  12  
    m  Minute in hour  Number  30  
    s  Second in minute  Number  55  
    S  Millisecond  Number  978  
    z  Time zone  General time zone  Pacific Standard Time; PST; GMT-08:00  
    Z  Time zone  RFC 822 time zone  -0800