Java 日付と時刻:SimpleDateFormat、現在の日付と比較
このチュートリアルでは、次のことを学びます–
- 現在の日付をJavaで表示
- SimpleDateFormat:日付の解析とフォーマット
- 日付の比較の例
まず Date で構成されるパラメータを理解しましょう .
主に–
が含まれます- 年 (2 桁または 4 桁)
- 月 (2 桁、月の最初の 3 文字、または月の単語全体)
- 日付 (その月の実際の日付になります)。
- 日 (指定された日付 – 日、月、火など)
コンピューター システムに関しては、日付に関連付けるために使用できるパラメーターが非常に多くあります。このトピックの後半でそれらについて説明します。
Java で日付を表示
次に、Java がどのように Date を提供するかを見てみましょう。まず、現在の日付を取得する方法を見ていきます-
Java は、java.util パッケージの下に Date クラスを提供します。このパッケージは、日付をいじるいくつかのメソッドを提供します。
次のように Date クラスのコンストラクターを呼び出して、Date オブジェクトを使用できます。
import java.util.Date;
class Date_Ex1 {
public static void main(String args[]) {
// Instantiate a Date object by invoking its constructor
Date objDate = new Date();
// Display the Date & Time using toString()
System.out.println(objDate.toString());
}
} 出力:
Wed Nov 29 06:36:22 UTC 2017
上記の例の日付はデフォルトの形式で表示されていますが、日付と時刻を別の形式で表示したい場合は、まず日付の形式を理解してください。
SimpleDateFormat:日付の解析とフォーマット
皆さんは幼稚園でアルファベットを学んだに違いありません….
では、日付形式の ABC を学びましょう。
| 手紙 | 日付または時刻コンポーネント | 例 |
|---|---|---|
| G | 年号指定子 | 西暦 |
| y | 年 | 2018 |
| M | 月 | 7 月または 7 月または 07 |
| w | 年の週 | 27 |
| 西 | 月の週 | 2 |
| D | 年間通算日 | 189 |
| d | 日 | 10 |
| F | 月の曜日 | 2 |
| 日 | 曜日名 | 火曜日または火曜日 |
| う | 曜日番号 (1 =月曜日、…、7 =日曜日) | 1 |
| a | 午前/午後マーカー | 午後 |
| H | 時間 (0-23) | 0 |
| k | 時間 (1-24) | 24 |
| K | 午前/午後の時間 (0-11) | 0 |
| 時間 | 午前/午後の時間 (1-12) | 12 |
| 分 | 分単位 | 30 |
| 秒 | 55 | |
| S | ミリ秒 | 978 |
| z | タイムゾーン | 太平洋標準時。 PST; GMT-08:00 |
| Z | タイムゾーン | -0800 |
| X | タイムゾーン | -08 または -0800 または -08:00 |
これらすべてを覚えておく必要はありません。特定の日付をフォーマットする必要があるときにいつでも参照できます。
SimpleDateFormat の使用方法
Java は、SimpleDateFormat と呼ばれるクラスを提供します。これにより、必要に応じて日付をフォーマットおよび解析できます。
上記の文字を使用してフォーマットを指定できます-
例:
1) 必要な日付形式:2012.10.23 20:20:45 PST
指定された適切な日付形式は次のようになります - yyyy.MM.dd HH:mm:ss zzz
2) 必須の日付形式:09:30:00 AM 23-May-2012
指定される適切な日付形式は、-hh:mm:ss a dd-MMM-yyyy になります。
ヒント: 大文字小文字に注意してください。 M を m と間違えると、望ましくない結果になります!
コード例でこれを学びましょう。
import java.text.SimpleDateFormat;
import java.util.Date;
class TestDates_Format {
public static void main(String args[]) {
Date objDate = new Date(); // Current System Date and time is assigned to objDate
System.out.println(objDate);
String strDateFormat = "hh:mm:ss a dd-MMM-yyyy"; //Date format is Specified
SimpleDateFormat objSDF = new SimpleDateFormat(strDateFormat); //Date format string is passed as an argument to the Date format object
System.out.println(objSDF.format(objDate)); //Date formatting is applied to the current date
}
} 出力:
Wed Nov 29 06:31:41 UTC 2017 06:31:41 AM 29-Nov-2017
日付の比較の例
日付を比較する最も便利な方法は、compareTo() メソッドを使用することです
以下のコード スニペットを見てみましょう-
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
class TestDates_Compare {
public static void main(String args[]) throws ParseException {
SimpleDateFormat objSDF = new SimpleDateFormat("dd-mm-yyyy");
Date dt_1 = objSDF.parse("20-08-1981");
Date dt_2 = objSDF.parse("12-10-2012");
System.out.println("Date1 : " + objSDF.format(dt_1));
System.out.println("Date2 : " + objSDF.format(dt_2));
if (dt_1.compareTo(dt_2) > 0) {
System.out.println("Date 1 occurs after Date 2");
} // compareTo method returns the value greater than 0 if this Date is after the Date argument.
else if (dt_1.compareTo(dt_2) < 0) {
System.out.println("Date 1 occurs before Date 2");
} // compareTo method returns the value less than 0 if this Date is before the Date argument;
else if (dt_1.compareTo(dt_2) == 0) {
System.out.println("Both are same dates");
} // compareTo method returns the value 0 if the argument Date is equal to the second Date;
else {
System.out.println("You seem to be a time traveller !!");
}
}
} 出力:
Date1 : 20-08-1981 Date2 : 12-10-2012 Date 1 occurs before Date 2
Java