2017-06-16 155 views
-1

我跑了下面的代码,并得到模棱两可的结果:的SimpleDateFormat返回不正确的日期

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.任何人都可以帮助我获得正确的结果,因为它是我项目中的一项要求。

+1

'YYYY'是不一样'yyyy'。请参阅[Java字符串到日期转换](https://stackoverflow.com/q/4216745/5221149)。 – Andreas

+0

与ddMMyyyy也得到了31122018而不是31122017,但是当我用ddMMyyy尝试时,我能够得到31122017.感谢您的帮助:) –

回答

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"); 
    }   
相关问题