2012-01-02 6 views
1

DateオブジェクトをSimpleDateFormatに適用したいと考えています。今日はDateで、formatStringを返すので、私はこれを行うことはできませんJavaでフォーマットされた日付を取得したい

SimpleDateFormat myFormat = new SimpleDateFormat("dd MMM yyyy kkmm"); 
Date today = new Date(); 
today = myFormat.format(today); 

:私のような何かをしたいと思います。私も試してみました:私は他の場所で今日使用しようとすると、Javaが今日はインスタンス化されていない可能性があることを訴えるため

Date today; 
SimpleDateFormat myFormat = new SimpleDateFormat("dd MMM yyyy kkmm"); 
try{ 
    today = myFormat.parse((new Date()).toString()); 
}catch(Exception e){ 

} 

これは、良い解決策ではありません。 Dateオブジェクトのフォーマットを変更する良い方法は何ですか(Dateオブジェクトを保持したまま文字列に変換しないでください)。

+3

Dateオブジェクトに関連する書式がないため、SimpleDateFormatが存在する理由は何ですか? – fge

+0

私はDateオブジェクトを渡す必要があるインターフェイスを使用しています。 Dateオブジェクトは、特定の方法でフォーマットする必要があります。これが私の要点です。私はそれを行う方法を知りたいので、DateからStringに変換してDateに戻す必要はありません。 – Boundless

+0

これらの2つの文は、「私はDateオブジェクトを渡す必要があるインターフェイスを使用しています」 - 「Dateオブジェクトを特定の方法でフォーマットする必要があります。ここでも、Dateオブジェクトに_no format_があります。 – fge

答えて

5

フォーマットと日付が誤って表示されています。

  • 日付にはフォーマットが含まれていません。日付は、日付、月、時、秒などの日付情報を含むクラスに過ぎません。
  • SimpleDateFormatは、Dateの文字列表現を示すものです。しかしそれに関連する日付はありません。

日付を表示する必要がある場合や、日付を文字列表現で保存する必要がある場合は、SimpleDateFormatを使用して文字列表現の日付を渡します。

このようにすると、同じDateオブジェクトを使用でき、2つの異なる文字列表現(SimpleDateFormatの2つの異なるインスタンスを使用)を表示できます。また、私はSimpleDateFormatインスタンスを1つ定義して、複数の日付をフォーマットすることもできます。

編集:今、あなたは日からいくつかの情報を削除したい場合は

。あなたはDateオブジェクトに書式を関連付けることはできません

GregorianCalendar Calendar Joda Time

+1

たとえば、次の文を入力します。Date today = new Date( "12/12/2011");今日はタイムゾーン、時間、分、秒などの情報はありません。これは私がフォーマットを意味するものです。私は現在Dateオブジェクトを取得していますが、送信する前にデータの一部(秒など)を削除します。 – Boundless

+0

woah私はいつも間違っていた –

0

あなたが達成しようとしていることは意味をなさないと思います。

Dateオブジェクトは時刻を表します。フォーマットはできません。しかし、それは特定の形式で文字列表現を得ることができます。 myFormat.format(today)のように。

0

あなたはここに何かを誤解していると思いますが、Dateのオブジェクトについてです。 Dateは、特定の時点に関する情報を保持しているだけで、フォーマットはまったくありません。 Stringの表現Dateの場合は、ここでフォーマットが行われます。

  1. DateオブジェクトにString表現の構文解析:あなただけはあるの書式を心配。
  2. DateString表現に戻して変換すると、特定の方法で表示されます。
0

質問には意味がありません。定義で日付をフォーマットするとは、特定の形式を使用して文字列に変換することを意味します。 DateオブジェクトはDateオブジェクトのままです。フォーマットを行う必要があるのは、Stringに変換したいときだけです。

+0

私が使用しているインターフェイスには、Dateオブジェクトが送られている必要があります。 Dateオブジェクトは、一定の方法でフォーマットする必要があります(秒を付けないなど)。私はこれを行う方法を提案できますか? – Boundless

+0

厳密には、書式設定ではありません。これは、例えば、時間コンポーネントが常に00:00:00の固定値を有することを保証することによって、「日付」の精度を制限するように思える。 – bobbymcr

0

代わりにあなただけの形式を適用することができます。

REFはJodaTimeのような他の良いSOLNがあり

Calendar rightNow = Calendar.getInstance(); 
Calendar cal = new GregorianCalendar(
    rightNow.get(YEAR), 
    rightNow.get(MONTH), 
    rightNow.get(DAY_OF_MONTH)); 
Date now = cal.getTime(); 

使用します表示中またはその他の活動中に、

Dateオブジェクト自体のすべての処理と単独で表示している間に、必要な書式に変更します

関連する問題