Javaで現在の日付と時刻を保持するためにどのデータ型を使用できますか?。Java Bean。
それは...ですか Java.util.Date
?
Java.util.Date
は、特定のタイムゾーンまたはカレンダーシステムへの参照なしで、時間のインスタントを表します。ただし、日付と時刻の両方を保持します。これは基本的に、Unixエポック以降のミリ秒単位の数値です。
代わりに、does両方のことを知っているJava.util.Calendar
を使用できます。
個人的には強く使用することをお勧めします Joda Time これはmuchより豊富な日付/時刻APIです。 「ちょうど日付」、「ちょうど現地時間」、「現地の日付/時刻」、「インスタント」、「タイムゾーン付きの日付/時刻」などのタイプで、データをより明確に表現できます。ほとんどのタイプまた、不変です。これは、コードの明確さという点でhugeの利点です。
import Java.util.Date;
import Java.text.DateFormat;
import Java.text.SimpleDateFormat;
private String getDateTime() {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
return dateFormat.format(date);
}
Java 8以降に組み込まれたJava.timeフレームワークは、最も古いバージョンのJavaとJoda-Timeライブラリにバンドルされた古い日時クラスの両方に取って代わります。 。Java.timeクラスはJava 6&7およびAndroidにバックポートされています。
Instant
クラスは、ナノ秒の分解能でUTCのタイムライン上の瞬間を表します。
Instant instant = Instant.now();
UTCからのオフセット(時間数と可能な分と秒)を適用して、OffsetDateTime
を取得します。
ZoneOffset offset = ZoneOffset.of( "-04:00" );
OffsetDateTime odt = OffsetDateTime.ofInstant( instant , offset );
さらに良いのは、夏時間(DST)などの異常を処理するための一連のルールに加えてオフセットであるフルタイムゾーンを適用することです。
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
JDBCドライバがJava.timeクラスと直接連携するように更新されることを願っています。それまでは、Java.sqlクラスを使用して、データベースとの間で日時値を移動する必要があります。ただし、Java.sqlクラスの使用はデータベース転送の雑用に限定してください。これらをビジネスロジックに使用しないでください。古い日時クラスの一部として、それらは不十分に設計され、混乱を招き、面倒です。
古いクラスに追加された新しいメソッドを使用して、Java.timeとの間で変換を行います。探す to…
およびvalueOf
メソッド。
使用 Java.sql.Timestamp
日時値のクラス。
Java.sql.Timestamp ts = Java.sql.Timestamp.valueOf( instant );
そして他の方向へ…
Instant instant = ts.toInstant();
日時データの場合、実質的に常にTIMESTAMP WITH TIME ZONE
データベースのテーブル列を設計するときは、WITHOUT
ではなくデータ型。
Joda-timeの推奨を+1します。単純なHello Worldの例以外のことを行う予定がある場合は、これを読むことをお勧めします。
RDBMSまたはJDBCドライバーに依存します。
ほとんどの場合、 Java.sql.Timestamp を使用できます。ほとんどの場合、準備されたステートメントとともに:
pstmt.setTimestamp( index, new Timestamp( yourJavaUtilDateInstance.getTime() );
私はこのインポートを使用しました:
import Java.util.Date;
そして、次のように変数を宣言しました:
Date studentEnrollementDate;
Java 8なので、 Java.time
標準ライブラリを使用する方法です。 Joda time Webページから:
Java SE 8以降、ユーザーはJava.time(JSR-310)-このプロジェクトを置き換えるJDKのコア部分に移行するように求められます。
質問に戻ります。 Java 8、使用したいと思います LocalDateTime
。日付と時刻が含まれていますが、タイムゾーンまたはUNIXエポックなどの参照ポイントを認識しません。
カレンダーを使用できます。
Calendar rightNow = Calendar.getInstance();