java.util.Date はほとんど非推奨であるため、特定の日付 (UTC 時間) のタイムスタンプを取得する正しい方法は何ですか? と比較できるものSystem.currentTimeMillis()
。
4 に答える
Calendarクラスを使用すると、特定のタイムゾーンの特定の時間にタイムスタンプを作成できます。それができたら、ミリ秒のタイムスタンプを取得して比較できます。
Calendar cal = new GregorianCalendar();
cal.set(Calendar.DAY_OF_MONTH, 10);
// etc...
if (System.currentTimeMillis() < cal.getTimeInMillis()) {
// do your stuff
}
編集:Calendarインスタンスからミリ秒単位で時間を取得するためのより直接的な方法を使用するように変更されました。アウトロープログラマーに感謝
日付が使用された多くのものの「公式」置換はカレンダーです。残念ながら、それはかなり不器用で過剰に設計されています。あなたの問題はこのように解決することができます:
long currentMillis = System.currentTimeMillis();
Date date = new Date(currentMillis);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
long calendarMillis = calendar.getTimeInMillis();
assert currentMillis == calendarMillis;
カレンダーは、一度に1つのフィールド(時間、分、秒など)でも、さまざまな方法で初期化できます。Javadocをご覧ください。
私自身は試していませんが、プロジェクトで外部ライブラリが許可されている場合は、JODA-Timeプロジェクト(オープンソース)を確認する必要があると思います。AFAIK、JODA時間は、日付/時刻の新しいJSR(通常はJava7)に大きく貢献しています。
多くの人が、JODA時間はすべてのjava.util.Date/Calendar問題の解決策であると主張しています;-)
間違いなく試してみる価値があります。
Calendarクラスを見てみましょう。
現在の時刻 (非推奨ではない) で Data を作成し、それから Calendar を作成できます (他の方法もあります)。