SimpleDateFormat返回错误的日期

时间:2017-06-16 17:28:14

标签: java

我运行了下面的代码并得到了模棱两可的结果:

    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.text.DateFormat;
    import java.text.ParseException;

    public class Test
    { 
        public static void main(String[] args)
        {
             DateFormat format = new SimpleDateFormat("yyyyMMdd");
             DateFormat secFormat = new SimpleDateFormat("ddMMYYYY"); 
             String date = "20171231";
             try {
                      Date newDate = format.parse(date);
                      System.out.println("Normal: "+newDate);          
                      System.out.println("Actual: 
                        "+secFormat.format(newDate));
                 } catch (ParseException ex) {
             System.out.println("Exception");
            }        
         }
       }

我得到的上述结果如下: 正常:太阳12月31日00:00:00 UTC 2017 实际:31122018

当值31122017时,

31122018被返回。任何人都可以帮助我在项目中获得正确的结果。

2 个答案:

答案 0 :(得分:0)

http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

以下是SDF所有不同格式选项的链接。

你的问题几乎肯定是在yyyy / YYYY的差异中。

参考此链接以确保您正确检查格式!

答案 1 :(得分:0)

试试这个:

    SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
    SimpleDateFormat secFormat = new SimpleDateFormat("ddMMyyyy"); 
    String date = "20171231";
    try {
        Date newDate = format.parse(date);
        System.out.println("Normal: "+newDate);          
        System.out.println("Actual: " +secFormat.format(newDate));
    } catch (Exception ex) {
        System.out.println("Exception");
    }