90 lines
3.2 KiB
Java
90 lines
3.2 KiB
Java
![]() |
package cn.trans88.taxiappkotlin.util;
|
|||
|
|
|||
|
import android.util.Log;
|
|||
|
|
|||
|
import java.text.SimpleDateFormat;
|
|||
|
import java.util.Calendar;
|
|||
|
import java.util.Date;
|
|||
|
|
|||
|
/**
|
|||
|
* @Author: LJH
|
|||
|
* @Time: 2023/2/15
|
|||
|
* @description:
|
|||
|
*/
|
|||
|
public class DateUtil {
|
|||
|
|
|||
|
public static SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|||
|
|
|||
|
/**
|
|||
|
* 获取任务第一次执行的开始或者结束日期
|
|||
|
* @param weekDay
|
|||
|
* @param startOrEndTime
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static Calendar getStartOrEndCalendar(Integer weekDay,Long startOrEndTime){
|
|||
|
Calendar calendar = Calendar.getInstance();
|
|||
|
calendar.setTime(new Date(startOrEndTime));
|
|||
|
int hourTime = calendar.get(Calendar.HOUR_OF_DAY);
|
|||
|
int minuteTime = calendar.get(Calendar.MINUTE);
|
|||
|
int secondTime = calendar.get(Calendar.SECOND);
|
|||
|
// 获取当前时间
|
|||
|
Calendar cal = Calendar.getInstance();
|
|||
|
|
|||
|
// 计算距离下一个周一的天数,SUNDAY = 1,Calendar.MONDAY == 2,依此类推SATURDAY == 7
|
|||
|
int day = weekDay - cal.get(Calendar.DAY_OF_WEEK);
|
|||
|
if (day <= 0) {
|
|||
|
day += 7;
|
|||
|
}
|
|||
|
if (!(cal.get(Calendar.DAY_OF_WEEK) == weekDay &&
|
|||
|
(cal.get(Calendar.HOUR_OF_DAY) < hourTime || (cal.get(Calendar.HOUR_OF_DAY) == hourTime &&
|
|||
|
cal.get(Calendar.MINUTE) < minuteTime) || (cal.get(Calendar.HOUR_OF_DAY) == hourTime &&
|
|||
|
cal.get(Calendar.MINUTE) == minuteTime && cal.get(Calendar.SECOND) < secondTime)))
|
|||
|
){
|
|||
|
// 设置日期为下一个weekDay
|
|||
|
cal.add(Calendar.DAY_OF_MONTH, day);
|
|||
|
}
|
|||
|
|
|||
|
// 设置时间
|
|||
|
cal.set(Calendar.HOUR_OF_DAY, hourTime);
|
|||
|
cal.set(Calendar.MINUTE, minuteTime);
|
|||
|
cal.set(Calendar.SECOND, secondTime);
|
|||
|
|
|||
|
// 获取日期
|
|||
|
Date date = cal.getTime();
|
|||
|
return cal;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取第一次执行任务的开始或者结束日期至下一次开始或结束日期的时间差
|
|||
|
* @param weekDay
|
|||
|
* @param startOrEndTime
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public static long getTimeDiff(Calendar calendar,Integer weekDay,Long startOrEndTime){
|
|||
|
|
|||
|
Calendar cal = Calendar.getInstance();
|
|||
|
cal.setTime(new Date(startOrEndTime));
|
|||
|
int hourTime = cal.get(Calendar.HOUR_OF_DAY);
|
|||
|
int minuteTime = cal.get(Calendar.MINUTE);
|
|||
|
int secondTime = cal.get(Calendar.SECOND);
|
|||
|
|
|||
|
Date firstDate = calendar.getTime();
|
|||
|
// System.out.println("firstDate:"+dateTimeFormat.format(firstDate));
|
|||
|
// 计算距离下一个weekDay的天数,SUNDAY = 1,Calendar.MONDAY == 2,依此类推SATURDAY == 7
|
|||
|
int day = weekDay - calendar.get(Calendar.DAY_OF_WEEK);
|
|||
|
if (day <= 0) {
|
|||
|
day += 7;
|
|||
|
}
|
|||
|
//设置日期为下一个weekDay
|
|||
|
calendar.add(Calendar.DAY_OF_MONTH,day);
|
|||
|
// 设置时间为10点
|
|||
|
calendar.set(Calendar.HOUR_OF_DAY, hourTime);
|
|||
|
calendar.set(Calendar.MINUTE, minuteTime);
|
|||
|
calendar.set(Calendar.SECOND, secondTime);
|
|||
|
//获取下一个周一的日期
|
|||
|
Date secondDate = calendar.getTime();
|
|||
|
// System.out.println("secondDate:"+dateTimeFormat.format(secondDate));
|
|||
|
return secondDate.getTime() - firstDate.getTime();
|
|||
|
}
|
|||
|
}
|