2016-06-27 21 views
1

Date DD/MM/YYを取得するためにCalendarをフォーマットする必要がありますが、Stringに変換する必要はありません。Dateデータ型に必要です。したがってカレンダーの書式設定

SimpleDateFormat simpleDate = new SimpleDateFormat("dd/M/yy"); 
Calendar cal2 = new GregorianCalendar(simpleDate); 
dateFormat.format(date); //Here i need to store the Date (dd/M/yy) into a Date kin of variable. (NO STRING) 

、私は変更が反映されます日付結果に、カレンダーを更新する必要があります。

+0

この[質問](http://stackoverflow.com/questions/25460965/how-can-i-create-a-date-object-with-a-specific-format)を読み、その答えを理解してからあなたの 'カレンダー'サブクラスで同じことを達成する方法を知っています。 – Tom

答えて

-1

これは十分に近接している場合より多くの経験を持つ人はいいだろう、このオーバーを確認することができるかどうかはわかりません!単に日付コンポーネントに組み合わさ「日時」を切り捨てる

java.util.Date、真夜中

public static Date truncateTime (Date date) { 
Calendar cal = Calendar.getInstance(); 
cal.setTime(date); 
cal.set(Calendar.HOUR_OF_DAY, 0); 
cal.set(Calendar.MINUTE, 0); 
cal.set(Calendar.SECOND, 0); 
cal.set(Calendar.MILLISECOND, 0); 
return cal.getTime(); 

}

-1

に有効フォーマットされた日付

タのデータのようなものを、それを残しませんには、の形式はありません。

日付時刻オブジェクトを生成することができます。テキストは、日付時刻の値を表す特定の形式の文字列オブジェクトです。しかし、文字列と日時は別々であり、互いに区別されます。

java.time

LocalDateクラスは、時刻なしとタイムゾーンなし、日付のみの値を表しています。

時間帯はLocalDateを決定する上で重要です。任意の瞬間について、日付は地球の周りでタイムゾーンによって異なります。たとえば、深夜から数分後、モントリオールではまだ "昨日"です。

ZoneId zoneId = ZoneId.of("America/Montreal"); 
LocalDate today = LocalDate.now(zoneId); 

java.util.Dateやjava.util.Calendarなどの面倒な古い日時クラスを使用しないでください。 java.timeクラスのみを使用してください。

あなたがGregorianCalendarオブジェクトを持っている場合は、新しい方法がtoZonedDateTime、古いクラスに追加呼び出すことによってZonedDateTimeに変換、GregorianCalendar

から変換します。

ZonedDateTime zdt = myGregCal.toZonedDateTime(); 

そこからLocalDateが得られます。 ZonedDateTimeオブジェクト自身の割り当てられたタイムゾーンは、その日付を決定するために使用されます。 java.util.Date

から

LocalDate localDate = zdt.toLocalDate(); 

変換あなたがjava.util.Dateオブジェクトを持っている場合は、Instantに変換します。このクラスは、タイムライン上のUTCでの瞬間を表します。

Instant instant = myUtilDate.toInstant(); 

ZonedDateTimeを取得するためにタイムゾーンを適用します。上記のようにLocalDateを入手してください。

ZoneId zoneId = ZoneId.of("America/Montreal"); 
ZonedDateTime zdt = ZonedDateTime.ofInstant(instant , zoneId); 
LocalDate localDate = zdt.toLocalDate(); 

不変オブジェクト

java.timeクラスはImmutable Objects設計に従ってください。 java.timeオブジェクトの値を変更(変更)するのではなく、元のオブジェクトの属性に基づいて新しいjava.timeオブジェクトがインスタンス化されます。

あなたは、LocalDate値を表すフォーマットパターンを定義するための文字列を生成したい場合は文字列

を生成します。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/M/yy"); 
String output = localDate.format(formatter); 

ところで、私は強く2桁の年の使用を勧めます。発生したあいまいさと解析に伴う問題は、2文字の節約に値するものではありません。

+1

親愛なるダウン投票者:あなたの投票に沿って批判を残してください。 –

+0

Askerが求めていることは、日付をフォーマットすることだけです。あなたが投稿しているものは、完全なcathedraです。 – Volazh