目次
1日付クラス
1.1 概要
java.util.Date
クラスは、ミリ秒単位の精度で特定の瞬間を表します。Date クラスのコンストラクターは、ミリ秒の値を日付オブジェクトに変換できます。
1.2 Dateクラスの構築方法
public Date()
: Date オブジェクトを割り当て、割り当てられた時刻 (ミリ秒単位の精度) を表すようにこのオブジェクトを初期化します。public Date(long date)
: 「エポック」と呼ばれる標準基準時間 (1970 年 1 月 1 日 00:00:00 GMT) からの指定されたミリ秒数を表す Date オブジェクトを割り当てて初期化します。
ヒント: 私たちは東第 8 地区にいるため、基準時間は 1970 年 1 月 1 日の 8:00:00 です。
簡単に言うと、パラメータなしの構築を使用すると、現在のシステム時間のミリ秒時間を自動的に設定できます。ロングタイプの構築パラメータを指定すると、ミリ秒時間をカスタマイズできます。例えば:
import java.util.Date;
public class DemoDate {
public static void main(String[] args) {
// 创建日期对象,把当前的时间转成日期对象
System.out.println(new Date()); // Sat Sep 19 23:11:21 CST 2020
// 创建日期对象,把当前的毫秒值转成日期对象
System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970
}
}
ヒント: println メソッドを使用すると、Date クラスの toString メソッドが自動的に呼び出されます。Date クラスは、Object クラスの toString メソッドをオーバーライドして書き換えるため、結果は指定された形式の文字列になります。
1.3 Date クラスの getTime メソッド: ミリ秒数を返す
2 DateFormat クラス
java.text.DateFormat
これは、日付/時刻書式設定サブクラスの抽象クラスです。このクラスを使用して、日付とテキストの間の変換を完了することができます。つまり、Date オブジェクトと String オブジェクトの間で相互に変換できます。
- 書式設定: 指定された形式に従って、Date オブジェクトから String オブジェクトに変換します。(フォーマット)
- 解析: 指定された形式に従って String オブジェクトから Date オブジェクトに変換します。(解析)
2.1 そのサブクラスSimpleDateFormatの構築メソッド
DateFormat は抽象クラスであり、直接使用できないため、一般的に使用されるサブクラスが必要ですjava.text.SimpleDateFormat
。このクラスには、書式設定または解析基準を指定するためのスキーマ (形式) が必要です。構築方法は次のとおりです。
public SimpleDateFormat(String pattern)
: 指定されたパターンとデフォルトのロケールの日付形式記号を使用して SimpleDateFormat を構築します。
パラメーター パターンは、日付と時刻のカスタム形式を表す文字列です。
フォーマット規則
一般的に使用される形式ルールは次のとおりです。
識別文字 (大文字と小文字が区別されます) | 意味 |
---|---|
y | 年 |
M | 月 |
d | 日 |
H | 時間 |
メートル | ポイント |
s | 2番 |
SimpleDateFormat オブジェクトを作成するコードは次のとおりです。
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class Demo02SimpleDateFormat {
public static void main(String[] args) {
// 对应的日期格式如:2018-01-16 15:06:38
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
}
2.2 DateFormatクラスの共通メソッド
DateFormat クラスの一般的に使用されるメソッドは次のとおりです。
public String format(Date date)
: Date オブジェクトを文字列にフォーマットします。public Date parse(String source)
: 文字列を解析して Date オブジェクトにします。
2.2.1 フォーマット方法
format メソッドを使用するコードは次のとおりです。
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
把Date对象转换成String
*/
public class Demo03DateFormatMethod {
public static void main(String[] args) {
Date date = new Date();
// 创建日期格式化对象,在获取格式化对象时可以指定风格
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str = df.format(date);
System.out.println(str); // 2020年09月19日
}
}
2.2.2 解析方法
parse メソッドを使用するコードは次のとおりです。
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
把String转换成Date对象
*/
public class Demo04DateFormatMethod {
public static void main(String[] args) throws ParseException {
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str = "2018年12月11日";
Date date = df.parse(str);
System.out.println(date); // Tue Dec 11 00:00:00 CST 2018
}
}
2.3 総合演習
質問: 日時関連 API を使用して、人が生まれてから何日目かを計算してください。
アイデア:
1. 現在時刻に対応するミリ秒値を取得します。
2. 生年月日に対応するミリ秒値を取得します。
3. 2回減算(現在時刻 – 生年月日)
コード:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/*
把String转换成Date对象
*/
public class Demo {
public static void main(String[] args) throws ParseException {
System.out.println("请输入出生日期 格式 YYYY-MM-dd");
// 获取出生日期,键盘输入
String birthdayString = new Scanner(System.in).next();
// 将字符串日期,转成Date对象
// 创建SimpleDateFormat对象,写日期模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 调用方法parse,字符串转成日期对象
Date birthdayDate = sdf.parse(birthdayString);
// 获取今天的日期对象
Date todayDate = new Date();
// 将两个日期转成毫秒值,Date类的方法getTime
long birthdaySecond = birthdayDate.getTime();
long todaySecond = todayDate.getTime();
long secone = todaySecond-birthdaySecond;
if (secone < 0){
System.out.println("还没出生呢");
} else {
System.out.println(secone/1000/60/60/24);
}
}
}
请输入出生日期 格式 YYYY-MM-dd
2019-09-12
373
3 カレンダークラス
3.1 コンセプト
java.util.Calendar
これは、Date の後に表示され、多くの Date メソッドを置き換えるカレンダー クラスです。このクラスは、簡単にアクセスできるように、すべての可能な時間情報を静的メンバー変数としてカプセル化します。Calendar クラスは、さまざまな時間属性を取得するのに便利です。
3.2 入手方法
Calendar は抽象クラスです。言語に依存するため、Calendar クラスはオブジェクトの作成時に直接作成されませんが、次のように静的メソッドを通じて作成され、サブクラス オブジェクトを返します。
カレンダーの静的メソッド
public static Calendar getInstance()
: デフォルトのタイムゾーンとロケールを使用してカレンダーを取得します
例えば:
import java.util.Calendar;
public class Demo06CalendarInit {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
}
}
3.3 一般的な方法
Calendar クラスの API ドキュメントによると、一般的なメソッドは次のとおりです。
public int get(int field)
: 指定されたカレンダー フィールドの値を返します。public void set(int field, int value)
: 指定されたカレンダー フィールドを指定された値に設定します。public abstract void add(int field, int amount)
: カレンダーのルールに従って、指定されたカレンダー フィールドに指定された時間を加算または減算します。public Date getTime()
: このカレンダー時間値 (エポックから現在までのミリ秒オフセット) を表す Date オブジェクトを返します。
Calendar クラスは、特定のカレンダー フィールドを表す多くのメンバー定数を提供します。
フィールド値 | 意味 |
---|---|
年 | 年 |
月 | 月(0から始まり+1で使用可能) |
DAY_OF_MONTH | 月の日(日) |
時間 | 時間 (12 時間形式) |
HOUR_OF_DAY | 時間 (24 時間形式) |
分 | ポイント |
2番 | 2番 |
曜日 | 曜日 (曜日、日曜日は 1、-1 とともに使用可能) |
3.3.1 get/setメソッド
get メソッドは指定されたフィールドの値を取得するために使用され、set メソッドは指定されたフィールドの値を設定するために使用されます。コード使用法のデモ:
import java.util.Calendar;
public class Demo {
public static void main(String[] args) {
// 创建Calendar对象
Calendar cal = Calendar.getInstance();
// 获取年
int year = cal.get(Calendar.YEAR);
// 获取月
int month = cal.get(Calendar.MONTH) + 1;
// 获取日
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.print(year + "年" + month + "月" + dayOfMonth + "日");
}
}
2020年9月20日
import java.util.Calendar;
public class Demo07CalendarMethod {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
// 设置年
cal.set(Calendar.YEAR, 2018);
// 获取年
int year = cal.get(Calendar.YEAR);
// 获取月
int month = cal.get(Calendar.MONTH) + 1;
// 获取日
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.print(year + "年" + month + "月" + dayOfMonth + "日");
}
}
2018年9月20日
3.3.2 addメソッド
add メソッドは、指定されたカレンダー フィールドの値を加算および減算できます。2 番目のパラメータが正の数値の場合はオフセットが加算され、負の数値の場合はオフセットが減算されます。次のようなコード:
import java.util.Calendar;
public class Demo08CalendarMethod {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
// 获取年
int year = cal.get(Calendar.YEAR);
// 获取月
int month = cal.get(Calendar.MONTH) + 1;
// 获取日
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + dayOfMonth + "日");
// 使用add方法
cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天
cal.add(Calendar.YEAR, -3); // 减3年
// 获取年
year = cal.get(Calendar.YEAR);
// 获取月
month = cal.get(Calendar.MONTH) + 1;
// 获取日
dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + dayOfMonth + "日");
}
}
2020年9月20日
2017年9月22日
3.3.3 getTime メソッド: 対応する Date オブジェクトを返します。
Calendar の getTime メソッドは、ミリ秒時刻を取得するのではなく、対応する Date オブジェクトを取得します。
import java.util.Calendar;
import java.util.Date;
public class Demo {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
System.out.println(date);
}
}
Sun Sep 20 08:44:18 CST 2020
チップ:
西洋の週は日曜日 (1) と月曜日 (2) に始まり、中国の週は月曜日に始まるため、-1 を使用できます。
Calendar クラスでは、月は 1 月から 12 月を表す 0 ~ 11 で表されます (+1 を使用できます)。
日付はサイズに関係しており、時間が遅いほど時間は大きくなります。