に有効フォーマットされた日付
タのデータのようなものを、それを残しませんには、の形式はありません。
日付時刻オブジェクトを生成することができます。テキストは、日付時刻の値を表す特定の形式の文字列オブジェクトです。しかし、文字列と日時は別々であり、互いに区別されます。
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文字の節約に値するものではありません。
この[質問](http://stackoverflow.com/questions/25460965/how-can-i-create-a-date-object-with-a-specific-format)を読み、その答えを理解してからあなたの 'カレンダー'サブクラスで同じことを達成する方法を知っています。 – Tom