2

Javaのタイプの2 つの変数startdateを作成したプロジェクトに取り組んでいます。 ご存知のように、Java の Date には日付と時刻の両方が含まれます。 しかし、クエリを実行している間は、startdate 変数の日付 (具体的には日) の部分だけが必要です。 試してみましたが、非推奨であり、代わりに使用する必要があると表示されます。 しかし、これを使用する方法がわかりません。どこでもグーグルで検索してみました。解決策は、現在の日付を取得することです。enddateDate


startdate.getday()Calendar.get(Calendar.DAY_OF_MONTH)

startdate に (30/01/1988 02:30:54) が含まれている場合は、30/01/1988 または可能であれば 30 と 01 と 1988 を文字列/int 変数で別々に取得できるようにしたいと考えています。

4

2 に答える 2

4
 Calendar cal = Calendar.getInstance();
 cal.setTime(startdate);
 cal.get(Calendar.DAY_OF_MONTH);
于 2012-10-15T13:55:29.100 に答える
1

このjava.util.Dateクラスは、設計が不十分で、混乱を招き、厄介な古いデータ時間クラスの一部です。それらを避けてください。

代わりに、java.time クラスを使用してください。

java.time

java.timeフレームワークは、Java 8 以降に組み込まれています。java.util.Dateこれらのクラスは、 、.Calendar、 &などの古い面倒な日時クラスに取って代わりますjava.text.SimpleDateFormat。Joda -Timeチームは、java.time への移行についてもアドバイスしています。

詳細については、 Oracle チュートリアルを参照してください。また、Stack Overflow で多くの例と説明を検索してください。

java.time 機能の多くは、ThreeTen-Backportで Java 6 および 7 にバックポートされ、さらにThreeTenABPで Android に適合されています。

Instant

最初のステップは、古いクラスから抜け出し、新しいクラスに入ることです。変換のために、新しいメソッドが古いクラスに追加されました。java.util.Dateクラスは現在提供していますtoInstant。AnInstantは、ナノ秒単位の解像度を持つ UTC のタイムライン上の瞬間です。

Instant instant = myUtilDate.toInstant();

タイムゾーン

日付の決定にはタイムゾーンが必要です。任意の時点で、日付はタイム ゾーンによって世界中で異なります。パリの真夜中の数分後でも、モントリオールではまだ「昨日」です。

クラスはZoneIdタイムゾーンを表します。ESTやなどの主流メディアで一般的に見られる 3 ~ 4 文字の略語は使用しないことに注意してくださいIST。これらは真のタイム ゾーンではなく、標準化されておらず、一意でもありません (!)。代わりに、tz データベースで format で定義されている適切なタイムゾーンcontinent/regionを使用してください。

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( zoneId );

ZonedDateTime必要な部品について問い合わせます。

int year = zdt.getYear();
int month = zdt.getMonthValue(); // Or handy Month enum…  zdt.getMonth();
int dayOfMonth = zdt.getDayOfMonth();

LocalDate

時間帯とタイムゾーンを明らかに無視したい大規模な作業を行っている場合は、このLocalDateクラスを使用してください。

LocalDate localDate = zdt.toLocalDate();
于 2016-07-21T05:32:07.840 に答える