それ以降Date.getHours
、時間と分をどのようにして取得し、Date.getMinutes
廃止されましたか?Google検索で見つけた例では、非推奨のメソッドが使用されていました。
それ以降Date.getHours
、時間と分をどのようにして取得し、Date.getMinutes
廃止されましたか?Google検索で見つけた例では、非推奨のメソッドが使用されていました。
回答:
標準の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ライブラリを使用することの長所と短所については、この質問を参照してください。
Joda Timeは、Javaの将来のバージョンに標準コンポーネントとして含まれる可能性があります。JSR-310を参照してください。
従来の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!
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と同等です。
ZonedDateTime
。代わりに使用してください。
私はJoda -Timeのファンですが、Java 8はjava.timeパッケージを導入しています。これは、ついに価値のあるJava標準ソリューションです!この記事「Java SE 8の日付と時刻」を読んで、時間と分以外のjava.timeに関するかなりの情報を入手してください。
特に、LocalDateTime
クラスを見てください。
時間と分:
LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
LocalDateTime.now(ZoneId.of("Asia/Manilla"))
。now()
一貫性のために1回だけ読み取ります(2つの呼び出しの間に時間が経過します)。日付が本当に関係ない場合でもLocalTime
動作します。
ZonedDateTime
ではなくクラスを使用することですLocalDateTime
。ではLocalDateTime
、あなたは何も得て、理由もなく、貴重なタイムゾーン情報を破棄しています。
ZonedDateTime.now().getHour()
…または…
LocalTime.now().getHour()
ZonedDateTime
JDによって回答は良いが、最適ではありません。その回答は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のフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは面倒古い取って代わるレガシーのような日付時刻クラスをjava.util.Date
、Calendar
、& SimpleDateFormat
。
詳細については、Oracleチュートリアルを参照してください。スタックオーバーフローで多くの例と説明を検索してください。仕様はJSR 310です。
ジョダタイムプロジェクトは、今でメンテナンスモードへの移行をアドバイスjava.timeのクラス。
java.timeオブジェクトをデータベースと直接交換することができます。JDBC 4.2以降に準拠したJDBCドライバーを使用します。文字列もクラスも必要ありません。java.sql.*
java.timeクラスはどこで入手できますか?
ThreeTen-エクストラプロジェクトでは、追加のクラスでjava.timeを拡張します。このプロジェクトは、java.timeに将来追加される可能性があることを証明する場です。あなたはここにいくつかの有用なクラスのような見つけることがInterval
、YearWeek
、YearQuarter
、および多くを。
カレンダーをお試しください。getInstanceを使用して、Calender-Objectを取得します。次に、setTimeを使用して必要な日付を設定します。これで、HOUR_OF_DAYなどの適切な定数とともにget(intフィールド)を使用して、必要な値を読み取ることができます。
http://java.sun.com/javase/6/docs/api/java/util/Calendar.html
int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();
これらの関数は、int値を時間と分で返します。
java.sql.Time
?確かに、古いクラスを入手する理由はまったくありませんjava.time.LocalTime
。複雑すぎます。
getMinutes()
(私は、Java 1.8を使用しています)で推奨されていませんとに置き換えられましたCalendar.get(Calendar.MINUTE)
分と時間を取得するもう1つの方法は、SimpleDateFormatを使用することです。
SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
String getMinutes = formatMinutes.format(new Date())
SimpleDateFormat formatHours = new SimpleDateFormat("HH")
String getHours = formatHours.format(new Date())
java.util.Date
、java.util.Calendar
とjava.text.SimpleDateFormat
今のレガシーに取って代わられ、java.timeの Javaの8に、後に内蔵されたクラス。Oracleによるチュートリアルを参照してください。
アドホダの時間を探すことをお勧めします。 http://www.joda.org/joda-time/
私は自分のシックプロジェクトに別のライブラリを追加することを恐れていましたが、それは簡単で高速、そしてスマートで素晴らしいものです。さらに、ある程度、既存のコードでうまく機能します。
java.util.Date
、java.util.Calendar
とjava.text.SimpleDateFormat
今のレガシーに取って代わられ、java.timeの Javaの8に、後に内蔵されたクラス。Oracleによるチュートリアルを参照してください。