2017-06-16 156 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"); 
    }   
相關問題