目次
現在日時を取得(LocalDateTime)
LocalDateTime.nowで現在日時を取得します。
DateTimeFormatterで表示形式を指定します。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Test1 {
public static void main(String[] args) {
// 現在日時を取得
LocalDateTime date1 = LocalDateTime.now();
System.out.println(date1); // 2021-10-06T23:47:22.175049200
// 表示形式を指定
DateTimeFormatter dtformat =
DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS");
String fdate1 = dtformat.format(date1); //表示形式+Stringに変換
System.out.println(fdate1); // 2021/10/06 23:47:22.175
}
}
SSSはミリ秒です。
表示形式の不要な項目は削除できます。
年月日時分秒の日本語で表示する場合
DateTimeFormatter dtformat =
DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒SSSミリ秒");
区切りなし(yyyyMMddHHmmss)で表示する場合
DateTimeFormatter dtformat =
DateTimeFormatter.ofPattern("yyyyMMddHHmmss")
LocalDateTime型からString型に変換
toStringメソッドでStringに変換できます。
String date1 = LocalDateTime.now().toString();
System.out.println(date1); // 2021-10-06T23:47:22.175
LocalDateTimeクラス
- nowメソッドで現在日時を取得できます。
- Java8で導入されました。Date and Time APIと呼ばれています。
- イミュータブルかつスレッドセーフです。
- https://docs.oracle.com/javase/jp/8/docs/api/java/time/LocalDateTime.html
イミュータブル
- インスタンスを作成した後、そのインスタンスの状態が変わらないことです。
- 日付を加算をしても元のインスタンスは変わらず新しいインスタンスを返します。
- Calendarクラスのインスタンスは状態が変わります。→ミュータブルです。
スレッドセーフ
- 複数のスレッドが同時に実行しても問題が発生しません。
現在日を表示(LocalDate)
LocalDate.now()は現在日を取得します。
import java.time.LocalDate;
public class Test1 {
public static void main(String[] args) {
LocalDate date1 = LocalDate.now();
System.out.println(date1); // 2021-10-06
}
}
現在時刻を取得(LocalTime)
LocalTime.now()は現在時間を取得します。
import java.time.LocalTime;
public class Test1 {
public static void main(String[] args) {
LocalTime date2 = LocalTime.now();
System.out.println(date2); // 20:32:07.121
}
}
現在日時を表示(Timestamp)
import java.sql.Timestamp;
public class Test1 {
public static void main(String[] args) {
// 現在日時を表示
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
System.out.println(timestamp); //2021-10-06 21:24:20.901
}
}
戻り値はTimestamp型です。
タイムゾーンで現在日時を取得(ZonedDateTime)
ZonedDateTimeクラスは、タイムゾーンを指定できます。
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class Test1 {
public static void main(String[] args) {
// 現在日時を取得
ZonedDateTime date1
= ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
System.out.println(date1);
// 2018-02-10T23:12:40.226002900+09:00[Asia/Tokyo]
}
}
9行目は、タイムゾーンIDにAsia/Tokyoを指定しています。
ZonedDateTimeクラス(タイムゾーン)
nowメソッドで現在日時を取得できます。
Java8で導入されました。Date and Time APIと呼ばれています。
イミュータブルかつスレッドセーフです。
https://docs.oracle.com/javase/jp/8/docs/api/java/time/ZonedDateTime.html
ZoneIdクラス
https://docs.oracle.com/javase/jp/8/docs/api/java/time/ZoneId.html
現在日時を取得(Date)
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test1 {
public static void main(String[] args) {
// 現在日時を取得
Date date1 = new Date();
System.out.println(date1); // Fri Aug 05 00:28:47 JST 2016
// 表示形式を指定
SimpleDateFormat sdformat1 =
new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
String fdate1 = sdformat1.format(date1);//表示形式+Stringに変換
System.out.println(fdate1); // 2016/08/05 00:28:47.646
}
}
8行目は、Dateクラスで現在日時を取得しています。
13行目は、SimpleDateFormatクラスでyyyy/MM/ddの表示形式を指定しています。ミリ秒を表示する場合は、SSSを指定します。
年月日時分秒の日本語で表示
SimpleDateFormat sformat =
new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒SSSミリ秒");
SimpleDateFormatで表示形式を指定しparseメソッドでDate型として出力します。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test1 {
public static void main(String[] args) {
String date1 = "2021/10/06 23:47:22.175";
try {
Date date =
new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS").parse(date1);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
Date型をLocalDateTime型に変換
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
class Test1 {
public static void main( String[] args ) {
Date date = new Date();
Instant instant = date.toInstant();
LocalDateTime localdatetime
= LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
System.out.println(localdatetime); //2022-01-11T22:57:32.646
}
}
9行目のInstantクラスとtoInstantメソッドはJava1.8に追加されました。
時系列の時点を表します。
Dateクラス
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Date.html
SimpleDateFormatクラス
日時を指定した表示形式にします。
https://docs.oracle.com/javase/jp/8/docs/api/java/text/SimpleDateFormat.html
現在日時を取得(Calendar)
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test1 {
public static void main(String[] args) {
// 現在日時を取得
Calendar calendar = Calendar.getInstance();
// Date型に変換
Date date = calendar.getTime();
System.out.println(date); // Sun Jan 01 22:30:10 JST 2017
// 表示形式を指定
SimpleDateFormat sformat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss SSS");
String fdate = sformat.format(date);
System.out.println(fdate); // 2017/01/01 22:30:10 471
}
}
8行目は、CalendarクラスのgetInstanceメソッドで現在日時を取得しています。
11行目は、Date型に変換しています。
16行目のSimpleDateFormatクラスで表示形式(yyyy/MM/dd HH:mm:ss)を指定しています。
Calendarクラス
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Calendar.html
関連の記事