Javaで現在の日付を取得する方法
C#ではDateTime.Now
です。
引数なしで新しいDate
オブジェクトを作成するだけです。これは現在の日付と時刻を新しいオブジェクトに割り当てます。
import Java.util.Date;
Date d = new Date();
Javadoc for 引数のないコンストラクタ の言葉では、
Dateオブジェクトを割り当て、 割り当てられた時刻を表すように初期化します 最も近いミリ秒単位で測定します。
Java.util.Date
ではなくJava.sql.Date
を使用していることを確認してください - 後者はゼロ引数のコンストラクタを持っておらず、まったく異なる会話のトピックである、やや異なる意味を持ちます。 :)
Instant.now()
Java 8以降では、Java.util.Dateクラスは新しい Java.timeパッケージ ( チュートリアル )によって時代遅れになりました。古いJava.util.Date/.Calendarクラスは、よく知られているように面倒で混乱しやすく、欠陥があります。避けてください。
ZonedDateTime
現在の瞬間をJava.timeで入手してください。
ZonedDateTime now = ZonedDateTime.now();
ZonedDateTime
は次のものをカプセル化します。
タイムゾーンが指定されていない場合は、JVMの現在のデフォルトのタイムゾーンが自動的に割り当てられます。暗黙のうちにデフォルトに頼るよりも、あなたの希望する/予想されるタイムゾーンを指定する方が良いでしょう。
ZoneId z = ZoneId.of( "Pacific/Auckland" );
ZonedDateTime zdt = ZonedDateTime.now( z );
一般的には、バックエンドの作業(ビジネスロジック、データベース、ストレージ、データ交換)をすべて UTC タイムゾーンで行う習慣を身に付けるのがよいでしょう。上記のコードは、JVMの現在のデフォルトタイムゾーンに暗黙的に依存しています。
Instant
クラスは、ナノ秒の分解能でUTCのタイムライン上の瞬間を表します。
Instant instant = Instant.now();
Instant
クラスはJava.timeの基本的な構成要素クラスであり、コードの中で頻繁に使用されることがあります。
より柔軟な書式設定が必要な場合は、 OffsetDateTime
に変換してください。 ZoneOffset
オブジェクトを指定してください。 UTCの場合は便利な UTCの定数 を使います。
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );
ユーザーに提示するために別のタイムゾーンに簡単に調整できます。 適切なタイムゾーン名 、 never EST
やIST
などの3〜4文字のコードを使用してください。
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime nowMontreal = instant.atZone( z );
ローカライズされた、その日時値のString表現を生成します。
String output = DateTimeFormatter
.ofLocalizedDate( FormatStyle.FULL )
.withLocale( Locale.CANADA_FRENCH )
.format ( nowMontreal );
Instant
または、UTCを維持するには、 Instant
を使用します。 Instant
オブジェクトは、常にUTC単位で、ナノ秒の分解能までのタイムライン上の瞬間を表します。これにより、タイムゾーンの割り当てとともに、ゾーン化された日時の構成要素が提供されます。あなたはそれを概念的にこのように考えることができます:
Instant
からZonedDateTime
を抽出できます。
Instant instantNow = zdt.toInstant();
あなたはインスタントから始めることができます。 Instant
は常にUTCであるため、ここでタイムゾーンを指定する必要はありません。
Instant now = Instant.now();
私はCalendarオブジェクトを使うのが好きです。
Calendar now = GregorianCalendar.getInstance()
私は一緒に仕事をする方がずっと簡単だと思います。カレンダーからDateオブジェクトを取得することもできます。
http://Java.Sun.com/javase/6/docs/api/Java/util/GregorianCalendar.html
Java 8では、
ZonedDateTime dateTime = ZonedDateTime.now();
Java.lang.System.currentTimeMillis();
は、エポック以降の日時を返します
import org.joda.time.DateTime;
DateTime now = DateTime.now();
新しいDateオブジェクトを作成すると、デフォルトで現在の時刻に設定されます。
import Java.util.Date;
Date now = new Date();
Javaは、日付と時刻の使用例に対するサポートが常に不十分です。たとえば、既存のクラス(Java.util.Date
やSimpleDateFormatter
など)はスレッドセーフではないため、同時実行性の問題が発生する可能性があります。また、APIには特定の欠陥があります。たとえば、Java.util.Date
の年は1900年から始まり、月は1から始まり、日は0から始まります。直感的にはわかりません。これらの問題により、Joda-Time
などのサードパーティの日付と時刻のライブラリが人気になりました。新しい日時に対応するために、APIはJava SE 8用に設計されています。
LocalDateTime timePoint = LocalDateTime.now();
System.out.println(timePoint);
doc :に従って
メソッド
now()
は、システムクロックとデフォルトのタイムゾーンを使用して現在の日時を返します。null ではありません。デフォルトのタイムゾーンのシステムクロックから現在の日時を取得します。これはデフォルトのタイムゾーンのシステムクロックを問い合わせて現在の日時を取得します。クロックはハードコードされているため、この方法を使用するとテストに代替クロックを使用することができなくなります。