記事の最後に個人の公開アカウントがあります:テクノロジーを愛する Xiao Zheng。主に開発知識や教材、卒業設計指導などの共有を行っています。興味のある人は注目してみてはいかがだろうか。なぜ共有するのでしょうか? 自分が踏んだ落とし穴を再び他人に踏ませる必要はなく、自分で見直すことで記憶も深まるでしょう。自分の利益と他人の利益は、いわゆるwin-winの状況です。
テクノロジーを愛するシャオ・ジェンさん
序文
開発中にはこのような場面に遭遇することがありますが、一般的にはトランザクション送信の流れが発生します。一般に水の流れは増加する形をとっており、水の流れをそのままにしておくと時間の経過とともに水の流れはどんどん大きくなっていきます。過剰なフローを避けるために、新しい日にフローをリセットする必要があります(フローは特定のルールに従って接続できます)。
2 つの時刻が同じ日にあるかどうか、つまり、年、月、日が同じかどうかを判断するには、Java の date クラスを使用します。ここでは 2 つの方法を説明します。
現在の日付を取得する
/**
* 获取当前时间 日期:20230912 年:2023 月:9 日:12
*/
public static void testData02(){
Date currentDate = new Date();
//int currentYear = currentDate.getYear(); //该方法已经过时
SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");
Calendar calender = Calendar.getInstance();
calender.setTime(currentDate);
String currentTime = ft.format(calender.getTime());
int currentYear = calender.get(Calendar.YEAR);
int currentMonth = calender.get(Calendar.MONTH)+1;
int currentDay = calender.get(Calendar.DATE);
System.out.println("日期:" + currentTime +" " + " 年:" + currentYear + " "
+ " 月:" + currentMonth + " " +" 日:" + currentDay);
}
方法1【Calendarクラスを使用する】
2 つの時刻の年、月、日の情報を取得して比較し、これら 3 つの情報が同じであれば、2 つの時刻は同じ日であると見なされます。
/**
* 方法一:使用Calendar类
* 判断两个时间是否为同一天
* @param date1 时间1
* @param date2 时间2
* @return 是否为同一天
*/
public static boolean isSameDay1(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR)
&& cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH)
&& cal1.get(Calendar.DAY_OF_MONTH) == cal2.get(Calendar.DAY_OF_MONTH);
}
方法2【SimpleDateFormatクラスを使用する】
SimpleDateFormatクラスを使用して日付を「yyyyMMdd」形式にフォーマットし、2 つの時刻の文字列形式を比較して等しいかどうかを確認し、2 つの時刻が同じ日であるかどうかを判断します。
/**
* 方法二:使用SimpleDateFormat类
* 判断两个时间是否为同一天
* @param date1 时间1
* @param date2 时间2
* @return 是否为同一天
*/
public static boolean isSameDay2(Date date1, Date date2) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
return sdf.format(date1).equals(sdf.format(date2));
}
テスト
public static void main(String[] args) throws ParseException {
CompareTimeisEquall.testData02();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");
Date date1 = sdf.parse("2021-07-01");
Date date2 = sdf.parse("2021-07-01");
Date date3 = sdf.parse("2021-07-02");
Date date4 = sdf1.parse("20230912");
Date date5 = sdf1.parse("20230912");
Date date6 = sdf1.parse("20230911");
// 方法一示例
System.out.println(isSameDay1(date1, date2)); // true
System.out.println(isSameDay1(date1, date3)); // false
// 测试 20230912 类型的日期
System.out.println(isSameDay1(date4, date5)); // true
System.out.println(isSameDay1(date5, date6)); // false
// 方法二示例
System.out.println(isSameDay2(date1, date2)); // true
System.out.println(isSameDay2(date1, date3)); // false
}