2009-04-14 17 views
3

以下のサンプルコードでは問題が発生していないようです。何らかの理由で、年を無視し、日付が同じであると言いますが、以下の出力に見られるようになります。私は単純なものを逃しているに違いない。日時変換のjava文字列への変換の問題

2006年1月28日
2007年1月16日
火4月1日午前0時00分00秒PDT 2008
火4月1日午前0時00分00秒PDT 2008
行わ

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

    class ExampleProgram { 
     public static void main(String[] args){ 
     DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
     String d1String = "01/28/2006"; 
     String d2String = "01/16/2007"; 
     System.out.println(d1String); 
     System.out.println(d2String); 
     Date d1=null; 
     try { 
      d1 = df.parse(d1String); 
     } catch (ParseException e) {     
      System.out.println(e.getMessage()); 
     }   
     Date d2=null; 
     try { 
      d2 = df.parse(d2String); 
     } catch (ParseException e) {     
      System.out.println(e.getMessage()); 
     } 
     System.out.println(d1); 
     System.out.println(d2); 
     System.out.println("done"); 
     } 
    } 
+0

エイプリルフールのジョーク?どちらの日付も4月1日+ 1年、-12月==同じ日付に対応していることが非常に工夫されているようです。 dateformatオブジェクトがstrict(df.setLenient(false))の場合、エラーが発生します。 – evnafets

答えて

6
"dd/MM/yyyy" 

は次のようになります。

"MM/dd/yyyy" 
+0

どのように私はそれを逃した....ありがとう! –

0

Dateのように日付を記入してください。

+1

彼はしました。コンストラクタDate(String)は非推奨です。彼は正しい方法で文字列を日付に変換しています。 –

1
それはピーターが SimpleDateFormatが、結果は、彼らが同じように見えると言っていることを理由 "MM/dd/yyyy"

を読むべきであると述べたようにあなたが期待される何を与えていなかったことを理由は、あなたがした形式である

"dd/MM/yyyy"d1Stringの月は28です。それは28-12を取って1年、16-12を追加して1年を追加し、結果は4(4月)で、今年は今年2008年です。同じことはd2Stringです。