JDK7以前の時間関連クラス
1.日付
Date date = new Date(); 、 sout(date) は現在の場所の時刻を取得します
Date date = new Date(0L); 、 sout(date) は時間の原点、1970 年 1 月 1 日の 08:00 (東第 8 地区) を取得します。
date.setTime(1000L); sout(date) は時刻の原点から 1 秒後の時刻を取得します
long time = date.getTime(); sout(date) は、日付の時刻原点からのミリ秒数を取得します。
1.1 概要
2.SimpleDateFormat
2.1 機能
2.2 施工方法と部材方法
// 此时此刻的时间
Date date = new Date();
// 时间原点的时间
Date date1 = new Date(0L);
System.out.println(date);// Wed Mar 01 10:48:59 CST 2023
// 时间原点之后1秒的时间
date.setTime(1000L);
System.out.println(date);// Thu Jan 01 08:00:01 CST 1970
// 获取date的时间距离原点时间的毫秒值
long time = date.getTime();
System.out.println(time);// 1000
// 需求一:时间原点一年后的时间
date.setTime(365 * 24 * 60 * 60 * 1000L);
System.out.println(date);// Fri Jan 01 08:00:00 CST 1971
// 需求二:比较两个Date对象哪个在前哪个在后
Date date2 = new Date(100L);
Date date3 = new Date(1000L);
long time2 = date2.getTime();
long time3 = date3.getTime();
long max = Math.max(time2, time3);
System.out.println(max);
// simpledateformat
// 空参构造是默认格式
SimpleDateFormat sdf = new SimpleDateFormat();
// 格式化(需要Date对象, 输出默认格式的时间字符串)
Date date4 = new Date(1000000000000L);
String format = sdf.format(date4);
System.out.println(format);// 2001/9/9 上午9:46
// 有参构造(设置格式Pattern)
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM/dd HH/mm-ss EE");
// 格式化(需要Date对象, 输出默认格式的时间字符串)
Date date5 = new Date(2000000000000L);
String format2 = sdf2.format(date5);
System.out.println(format2);// 2033-05/18 11/33-20 周三
// 解析(字符串->Date对象)
// 生成要解析的字符串
String datetest = "2023-5-20 13:14";
// 生成SDF, 必须要和上面的字符串格式对应
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-M-dd HH:mm");
// 调用解析方法, 输入要解析的字符串, 返回Date对象
Date parse = sdf3.parse(datetest);
long time1 = parse.getTime();
System.out.println(time1);// 1684559640000
2.3 演習 1
// practice1
String birthday = "2000-11-11";
SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd");
Date parse1 = sdf4.parse(birthday);
SimpleDateFormat sdf5 = new SimpleDateFormat("yyyy年MM月dd日");
String format1 = sdf5.format(parse1);
System.out.println(format1);
2.4 演習 2
// practice2
// start time
String starttime = "2023-11-11 00:00:00";
String endtime = "2023-11-11 00:10:00";
String xiaojia = "2023-11-11 00:01:00";
String xiaopi = "2023-11-11 00:11:00";
SimpleDateFormat sdf6 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startdate = sdf6.parse(starttime);
Date enddate = sdf6.parse(endtime);
Date xiaojiadate = sdf6.parse(xiaojia);
Date xiaopidate = sdf6.parse(xiaopi);
long startdateTime = startdate.getTime();
long enddateTime = enddate.getTime();
long xiaojiadateTime = xiaojiadate.getTime();
long xiaopidateTime = xiaopidate.getTime();
extracted(startdateTime, enddateTime, xiaojiadateTime);
extracted(startdateTime, enddateTime, xiaopidateTime);
参加するかどうかを決定するために使用される抽出方法。
private static void extracted(long startdateTime, long enddateTime, long Time) {
if (Time >= startdateTime && Time <= enddateTime){
System.out.println("参加上了");
}else {
System.out.println("没参加上");
}
}
3.カレンダー
3.1 カレンダークラスを取得する
Calendar は抽象クラスであるため、オブジェクトを直接作成することはできず、getInstance メソッドを通じて取得する必要があります。
取得されたカレンダー オブジェクトは、システムのさまざまなタイム ゾーンに従ってさまざまなカレンダー オブジェクトを取得し、デフォルトは現在時刻を表します。
時刻の元号、年、月、日、時、分、秒、週などを配列に入れます。
月: 範囲 0 ~ 11 取得された値が 0 の場合、実際には 1 月です。
週:外国人から見た日曜日が週の始まり
1(日曜日) 2(月曜日) 3(火曜日) - 4(水曜日) - 5(木) 6(金曜日) - 7(土曜日)
Calendar の配列のインデックスに対応する内容は次のとおりです。
0 : エポック
1 : 年
2 : 月
3 : 年間の週
4 : 月の週
5 : 月の日 (日付)
3.2 一般的な方法
getメソッドを使用する場合、Calendar配列(Calendarクラスで定数として定義)にインデックス値を入力します。
注:取得した int は独自の時間 (週と月) に変換する必要があります。
// calendar
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);// java.util.GregorianCalendar[time=1677654807019,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2023,MONTH=2,WEEK_OF_YEAR=9,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=60,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=13,SECOND=27,MILLISECOND=19,ZONE_OFFSET=28800000,DST_OFFSET=0]
// get Date calendar
Date time4 = calendar.getTime();
System.out.println(time4);// Wed Mar 01 15:10:54 CST 2023
// set Date to Calendar
Date date6 = new Date(5201314);
calendar.setTime(date6);
System.out.println(calendar);
// get
int year = calendar.get(Calendar.YEAR);
int mouth = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int week = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(year + "-" + mouth + "-" + day + getweek(week));
// modify year, mouth, day... of calendar
calendar.set(Calendar.YEAR, 1999);
calendar.set(Calendar.MONTH, 10);
calendar.set(Calendar.DAY_OF_MONTH, 31);
System.out.println(calendar);
// add year, mouth, day... of calendar
calendar.add(Calendar.YEAR, 2);
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DAY_OF_MONTH, -10);
System.out.println(calendar);
getweek() メソッドに一致する週を取得します
private static String getweek(int index){
String[] week = {"", "星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
return week[index];
}