Java でカレンダーの日付を YYYY-MM-DD 形式に変換する
Java の Date
は、現在の時刻と日付をカプセル化します。Date
クラスは、Date()
および Date(long ミリ秒)
コンストラクターの 2つのコンストラクターの助けを借りてそれを行います。
Date()
コンストラクターを使用して、オブジェクトを現在の日時で初期化します。一方、Date(long millisec)
コンストラクターは、1970 年 1 月 1 日
の午前 0 時からのミリ秒数を引数にとります。
ただし、取得する出力は yyyy-MM-dd
形式ではありません。この記事では、この形式で出力を生成する方法を説明します。
Java の date()
メソッドを使用して、現在の日付と時刻を取得します。これを行うには、toString()
メソッドで Date オブジェクトを使用します。以下の例を見て理解してください。
import java.util.Date;
public class DateExample {
public static void main(String args[]) {
// Create a date object
Date date_of_today = new Date();
// Use toString() to print the date
System.out.println(date_of_today.toString());
}
}
出力:
Mon Jan 10 09:58:43 UTC 2022
この例では、date_of_today
を使用して DDate オブジェクトをインスタンス化し、toString()
メソッドを使用して日付を出力します。取得する出力には、日、月、日付、年、および時刻が時間:分:秒
形式で含まれていることに注意してください。
これは、2つ以上の日付で作業する場合に問題を引き起こします。この出力から曜日と時刻の名前を削除するには、2つの方法で printf()
メソッドを使用できます。最初のものは記号%
と $
を使用します。
以下の例を見てください。
import java.util.Date;
public class DateExample {
public static void main(String args[]) {
// Create a new object
Date date_of_today = new Date();
// Display the date
System.out.printf("%1$s %2$tB %2$td, %2$tY", "Date:", date_of_today);
}
}
出力:
Date: January 10, 2022
2 番目の方法は、<flag
を使用することです。同じ例をもう一度見てください。
import java.util.Date;
public class DateExample {
public static void main(String args[]) {
// Create a new object
Date date_of_today = new Date();
// display the date
System.out.printf("%s %tB %<te, %<tY", "Date:", date_of_today);
}
}
出力:
Date: January 10, 2022
これらの例では、時間が省略されていることに注意してください。ただし、yyyy-MM-dd
形式の出力はまだ得られません。この問題にどのように対処できるか見てみましょう。
Java で日付を YYYY-MM-DD
形式に変換する
Java には java.time
パッケージがあります。日付クラスを使用して日付と時刻を操作する代わりに、java.time
パッケージを使用できます。最初に例を見てみましょう。
// import the java.time package
import java.time.LocalDate;
public class DemoOfDate {
public static void main(String[] args) {
// create an object for date
LocalDate date_of_today = LocalDate.now();
// Display the date
System.out.println(date_of_today);
}
}
出力:
2022-01-10
この例では、java.time
パッケージと LocalDate
クラスを使用します。今回は、yyyy-MM-dd
形式で出力を取得します。java.time
パッケージには 4つの主要なクラスがあります。
LocalDate
- 出力として、年、月、日、またはyyyy-MM-dd
形式の日付を指定します。LocalTime
- 時間とナノ秒単位の出力をHH-mm-ss-ns
として提供します。LocalDateTime
- 日付と時刻の両方の出力をyyyy-MM-dd-HH-mm-ss-ns
として提供します。DateTimeFormatter
- これは日時オブジェクトのフォーマッターとして機能し、それらを表示および解析するために使用されます。
上記の例では、LocalDate
クラスを使用していることに注意してください。さらに、now()
メソッドを使用します。Java の now()
メソッドは、クラス LocalTime
のメソッドです。システムクロックからデフォルトのタイムゾーンの現在時刻を取得します。
構文:
public static LocalTime now()
now()
メソッドではパラメータを渡しません。もう 1つの方法は、yyyy-MM-dd
形式で出力を取得することです。それも見てみましょう。ドキュメントへのリンクは次のとおりです。
Java で日付を YYYY-MM-DD
形式にフォーマットする
カレンダーの日付を yyyy-MM-dd
形式に変更するには、書式設定の概念を使用することもできます。これにより、日付と時刻の操作がはるかに柔軟になります。
これを行うには、java.time
パッケージにある ofPattern()
メソッドを使用します。ofPattern()
メソッドを使用して出力を取得するさまざまな方法は次のとおりです。
yyyy-MM-dd
- This gives the output as2022-01-25
dd/MM/yyyy
- This gives the output as25/01/2022
dd-MMM-yyyy
- This gives the output as25/01/2022
E, MMM dd yyyy
- This gives the output asTue, Jan 25 2022
例を見てみましょう。
// import the LocalDateTime class
import java.time.LocalDateTime;
// import the DateTimeFormatter class
import java.time.format.DateTimeFormatter;
public class DemoOfDate {
public static void main(String[] args) {
LocalDateTime date_of_today = LocalDateTime.now();
System.out.println("Output before formatting: " + date_of_today);
DateTimeFormatter format_date_of_today = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = date_of_today.format(format_date_of_today);
System.out.println("Output after formatting: " + formattedDate);
}
}
出力:
Output before formatting: 2022-01-01T10:46:21.449669400
Output after formatting: 2022-01-01
フォーマットを使用すると、yyyy-MM-dd
フォーマットで出力を取得できることに注意してください。これらすべての形式の値を移動することもできます。
たとえば、ofPattern()
メソッドで文字列 yyyy-MM-dd
を渡すと、その文字列を yyyy-dd-MM
または dd-MM-yyyy
などの方法で変更できます。必要に応じて。これは、ofPattern()
メソッドによって提供されるすべての形式に適用されます。
ここではもう 1つのメソッド、format()
メソッドを使用します。format()
メソッドは、指定されたロケール、引数、および Java の形式で文字列をフォーマットします。
ロケールを指定しない場合、format()
メソッドは Locale.getDefault()
メソッドを呼び出してデフォルトのロケールを取得します。format()
メソッドは、printf()
関数と同じように機能します。
Java で SimpleDateFormat
クラスを使用する
yyyy-MM-dd
形式で出力を取得するには、SimpleDateFormat
クラスを使用できます。これは、Java で日付と時刻をフォーマット(日付を文字列に変更)および解析(文字列を日付に変更)するためのメソッドを提供します。
それを継承することにより、java.text.DateFormat
クラスで動作します。例を見てみましょう。
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo {
public static void main(String[] args) {
Date date_of_today = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String stringDate = format.format(date_of_today);
System.out.println(stringDate);
}
}
出力:
2022-01-01
Java の SimpleDateFormat
クラスの詳細については、このドキュメントを参照してください。
まとめ
この記事では、Java でカレンダーの日付を yyyy-MM-dd
形式に変更する方法について説明しました。これには、java.time
パッケージの使用、toPattern()
メソッドを使用したフォーマット、および SimpleDateFormat
クラスが含まれます。さまざまなメソッドは、toString()
および now()
メソッドです。
yyyy-MM-dd
形式で出力を取得し、複数の日付が含まれている場合に使用できます。
関連記事 - Java Date
- Java Date と LocalDate
- Java で Zellers Congruence を使用して曜日を見つける
- Java 曜日を取得
- Java で文字列を LocalDate に変換する
- Java の日付形式の変更