web-dev-qa-db-ja.com

Java:getMinutesおよびgetHours

Date.getHoursDate.getMinutesが廃止されてからの時間と分の取得方法Google検索で見つけた例では、非推奨のメソッドを使用しました。

122
Alex

標準のJava.util.Dateクラスの代わりに Joda Time を使用してみてください。 Joda Timeライブラリには、日付を処理するためのはるかに優れたAPIがあります。

DateTime dt = new DateTime();  // current time
int month = dt.getMonth();     // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day

Joda Timeライブラリを使用する場合の長所と短所については、これを参照してください question .

Joda Timeは、標準コンポーネントとしてJavaの将来のバージョンにも含まれる可能性があります。 JSR-31 を参照してください。


従来のJava.util.DateおよびJava.util.Calendarクラスを使用する必要がある場合は、それらのJavaDocのヘルプを参照してください( Java.util.Calendar および Java.util.Date ) 。

このような従来のクラスを使用して、特定のDateインスタンスからフィールドをフェッチできます。

Date date = new Date();   // given date
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date);   // assigns calendar to given date 
calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format
calendar.get(Calendar.HOUR);        // gets hour in 12h format
calendar.get(Calendar.MONTH);       // gets month number, NOTE this is zero based!
161
Juha Syrjälä

Date.getHoursのJavadocから

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

だから使用する

Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);

およびgetMinutesに相当します。

83
Mark

Java.time

私は Joda-Time のファンですが、 Java 8 は最終的に価値のある Java.time パッケージを導入しますJava 標準溶液!この記事 Java SE 8 Date and Time を読んで、時間と分以外のJava.timeに関する十分な情報を入手してください。

特に、 LocalDateTime クラスを見てください。

時間と分:

LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
47
J.D.

まず、Java.util.Calendarをインポートします

Calendar now = Calendar.getInstance();
System.out.println(now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE));
34
James

カレンダーをお試しください。 getInstanceを使用してCalender-Objectを取得します。次に、setTimeを使用して、必要な日付を設定します。これで、get(int field)をHOUR_OF_DAYなどの適切な定数とともに使用して、必要な値を読み取ることができます。

http://Java.Sun.com/javase/6/docs/api/Java/util/Calendar.html

6
Tobias Langner

tl; dr

ZonedDateTime.now().getHour()

…または…

LocalTime.now().getHour() 

ZonedDateTime

J.D。による回答 は良いですが、最適ではありません。その回答はLocalDateTimeクラスを使用します。タイムゾーンまたはUTCからのオフセットという概念がないため、そのクラスは瞬間を表すことができません。

ZonedDateTime を使用することをお勧めします。

ZoneId z = ZoneID.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;

タイムゾーンを指定

ZoneId引数を省略すると、JVMの現在のデフォルトタイムゾーンを使用して、実行時に暗黙的に適用されます。

したがって、この:

ZonedDateTime.now()

…これと同じです:

ZonedDateTime.now( ZoneId.systemDefault() )

明示的であることが望ましく、希望する/予想されるタイムゾーンを渡します。デフォルトでは、実行時に 随時変更 を使用できます。

重要な場合は、ユーザーにタイムゾーンを確認します。

時分

時間と分のZonedDateTimeを調べます。

int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;

LocalTime

タイムゾーンなしで時刻だけが必要な場合は、LocalTimeを抽出します。

LocalTime lt = zdt.toLocalTime() ;

または、ZonedDateTimeに直接移動して、LocalTimeを完全にスキップします。

LocalTime lt = LocalTime.now( z ) ;  // Capture the current time-of-day as seen in the wall-clock time used by the people of a particular region (a time zone).

Java.timeタイプ

Table of types of date-time classes in modern Java.time versus legacy.


Java.timeについて

Java.time フレームワークはJava 8以降に組み込まれています。これらのクラスは、厄介な古い legacyJava.util.DateCalendar 、& SimpleDateFormat などの日時クラスに取って代わります。

詳細については、 Oracle Tutorial を参照してください。また、Stack Overflowで多くの例と説明を検索してください。指定は JSR 31 です。

Joda-Time プロジェクトは、現在 メンテナンスモード であり、 Java.time クラスへの移行を推奨しています。

Java.timeオブジェクトをデータベースと直接交換できます。 JDBC 4.2 以降に準拠する JDBCドライバー を使用します。文字列もJava.sql.*クラスも必要ありません。

Java.timeクラスはどこで入手できますか?

ThreeTen-Extra プロジェクトは、追加のクラスでJava.timeを拡張します。このプロジェクトは、Java.timeに将来追加される可能性のある証明の場です。 IntervalYearWeekYearQuartermore などの便利なクラスがあります。

4
Basil Bourque
int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();

これらの関数は、時間と分でint値を返します。

3

広告のジョーダ時間を確認することをお勧めします。 http://www.joda.org/joda-time/

私は自分の分厚いプロジェクトに別のライブラリを追加することを恐れていましたが、それは簡単で高速、スマートで素晴らしいです。さらに、既存のコードである程度再生できます。

2
alamar

分と時間を取得するもう1つの方法は、SimpleDateFormatを使用することです。

SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
String getMinutes = formatMinutes.format(new Date())

SimpleDateFormat formatHours = new SimpleDateFormat("HH")
String getHours = formatHours.format(new Date())
2
Paka
public static LocalTime time() {
    LocalTime ldt = Java.time.LocalTime.now();

    ldt = ldt.truncatedTo(ChronoUnit.MINUTES);
    System.out.println(ldt);
    return ldt;
}

これは私のために働く

1
Huey

私はそうすることをお勧めしませんが、Java.util.Dateの多くのメソッドは非推奨になっていますが、まだ機能していることを指摘する価値があると思います。些細な状況では、それらを使用しても構いません。また、Java.util.Calendarは非常に遅いため、getMonthおよびgetYear on Dateの方が便利です。

1
skaffman

import Java.util.*カレンダーとフォーマッタクラスを使用して時間と分を取得できます。 Calendar cal = Calendar.getInstance()およびFormatter fmt=new Formatter()を表示し、時間と分を表示する形式を設定しますfmt.format("%tl:%M",cal,cal)and System.out.println(fmt)出力を10:12のように表示します

0
Benjamin