2012-03-28 6 views
0

現在の日付をこの形式で表示したい水曜日3月28,2012、この形式を取得する方法を書いたそれは日付の無効な値を与える(私は土曜日sep2,1933を与えるコードを実行するので以来)それはなぜですか?私のコードのエラーは何ですか?"EEEE MMM d、yyyy"形式の日付を取得しようとすると、現在の日付の無効な値が返される

これは私のコードです:あなたは非推奨Date()コンストラクタを使用しているため

public class AddExercise extends Activity 
{ 
    private Date exercise_date; 
    private TextView date_Txt; 
    Calendar localCalendar = Calendar.getInstance(); 
    public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.add_exercise); 

    int year = localCalendar.get(Calendar.YEAR); 
    int month = localCalendar.get(Calendar.MONTH); 
    int day = localCalendar.get(Calendar.DAY_OF_MONTH); 
    exercise_date = new Date(day, month , yr); 
    date_Txt=(TextView)findViewById(R.id.date); 
    String x=formatdate(exercise_date, "EEEE MMM d, yyyy"); 
    date_Txt.setText(x); 
     } 

     public static String formatdate(Date paramDate, String paramString) 
    { 
    String str; 
    if (paramDate != null) 
    { 
     if (paramString == null) 
     paramString = "MMMM dd, yyyy"; 
     str = new SimpleDateFormat(paramString).format(paramDate); 
    } 
    else 
    { 
     str = null; 
    } 
    return str; 
    }  
    } 
+0

あなたは 'exercise_date'を構築するためにパラメータを逆にしました。これはコンストラクタです... 'Date(int year、int month、int day)'リングベアラが指摘するように、それは廃止予定です。あなたはそれを使用することはできません理由はありません。 – Squonk

答えて

1

これは主です。 これには次のパラメータが必要です。パラメータ: 年 - 年を-10000とする。 月 - 0〜11月。 date - 1〜31の日付。 しかし、あなたは、なぜあなたは、単にこの行いません完全に間違った年

を渡している。代わりに、すべてのフープを介してジャンプする

return new SimpleDateFormat("MMMM dd,yyyy").format(localCalendar.getTime()) 

またはいっそ

return new SimpleDateFormat("MMMM dd,yyyy").format(new Date())); 

を?この時

+0

その 'Date'コンストラクタは非難されていますが、それは主に理由ではありません。 OPのコードを見ていれば、パラメータの順序が間違っているのがわかります。廃止されても機能しないわけではありません。 – Squonk

+0

合意 - さらに詳細を追加しました。 –

+0

私を助けてくれてありがとう........... – user

1

ルック:

new Date(day, month , yr); 

deprecated Date constructorのためのドキュメントを見て:

public Date(int year, 
    int month, 
    int day) 

あなたが正しい順序で引数を得たい場合でも、年が間違っていただろうDateのコンストラクタは1900ベースです。

は廃止されたメンバーを使用しないでください。正当な理由で廃止されました。

理想的には、Joda Timeを使用してください。これは日付/時刻処理ではるかに優れています。しかし、それ以外の場合は、を使用して、自分で構築するのではなくCalendarからDateを取得してください。

+0

+1のJodaTime .. –

+0

ありがとう、それはとても役に立ちます – user

関連する問題