12

メソッドがJavaで非推奨になった場合、同じ機能を持つ別のより良い方法がありますよね?

Date date = new Date();
date.getHours()

非推奨ですが、クラスのみを使用して時間を取得するgetHours()最良の方法は何ですか?Date

4

7 に答える 7

12

Javadoc が明示的に提案する

Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY).

Joda ライブラリは、日付と時刻を処理するためのもう 1 つの最良の代替手段です。

于 2013-01-23T17:44:08.107 に答える
8

これらのメソッドは実際には非推奨です。

java.util.Calendar#get() を使用する必要があります

だからあなたの例は

Calendar cal = Calendar.getInstance();
cal.get(Calendar.HOUR);

このクラスの javadoc を参照してください。

cal で getTime を呼び出すと、Date オブジェクトを取得できることに注意してください。

于 2013-01-23T17:53:13.023 に答える
6
Calendar cal = Calendar.getInstance();
cal.get(Calendar.HOUR);

ご希望の方はデートとして

Date date = cal.getTime();
于 2013-01-23T17:43:58.887 に答える
4

Calendar または Joda Time ライブラリを使用する必要があります。

ただし、日付しか使用できない場合は、これが唯一の方法です。これはタイムゾーンに合わせて調整されないことに注意してください。

于 2013-01-23T17:44:14.507 に答える
3

java.time

java.utilDate-Time API とその書式設定 APIはSimpleDateFormat時代遅れで、エラーが発生しやすいものです。それらの使用を完全に停止し、最新の Date-Time APIに切り替えることをお勧めします*

また、以下はJoda-Timeのホームページからの通知です。

Java SE 8 以降では、このプロジェクトを置き換える JDK のコア部分である java.time (JSR-310) に移行するように求められることに注意してください。

java.time最新の Date-Time APIを使用したソリューション:

を使用して、タイムゾーン オフセット、年、月、日、ZonedDateTime#now(ZoneId)、分、秒、ナノ秒などの情報を取得できる現在の Date-Time オブジェクトを取得できます。タイムゾーン オフセットが必要ない場合は、代わりに使用できます。ただし、現在の時刻情報だけが必要な場合は、 を使用して特定のタイムゾーンの現地時間を取得し、.LocalDateTime#now(ZoneId)LocalTime#now(ZoneId)LocalTime

デモ:

import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Main {
    public static void main(String[] args) {
        // Change the JVM's ZoneId, ZoneId.systemDefault() with the applicable ZoneId
        // e.g. ZoneId.of("America/Los_Angeles")
        ZoneId zoneId = ZoneId.systemDefault();

        ZonedDateTime zdt = ZonedDateTime.now(zoneId);
        System.out.println(zdt.getHour());

        LocalDateTime ldt = LocalDateTime.now(zoneId);
        System.out.println(ldt.getHour());

        LocalTime time = LocalTime.now(zoneId);
        System.out.println(time.getHour());
    }
}

サンプル実行からの出力:

13
13
13

ONLINE DEMO

最新の Date-Time API の詳細については、Trail: Date Timeを参照してください。


* 何らかの理由で、Java 6 または Java 7 に固執する必要がある場合は、ほとんどのjava.time機能を Java 6 および 7 にバックポートするThreeTen-Backportを使用できます。Androidプロジェクトと Android API で作業している場合レベルはまだ Java-8 に準拠していません。desugarで利用できる Java 8+ APIと Android プロジェクトで ThreeTenABP を使用する方法 を確認してください。

于 2021-07-21T12:10:50.093 に答える