原来开发里很少有时间相关的开发任务,Calendar日历类用的太少,随手写的记录一下。
需求:判断用户当周是否已经提交过数据,按周一至周日为一周期来算
public static void main(String[] args) throws Exception {
// 设定时间值
String dateStr = "2023-01-01";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = simpleDateFormat.parse(dateStr);
// 转为calendar格式
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
// 如果是周日
if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
calendar.add(Calendar.DAY_OF_YEAR,-1);
}
/**
* calendar.get(Calendar.MONTH)+1 calendar中的月份以0开头
* Calendar.DAY_OF_WEEK 当前日期是所在周的第几天(以周日为一周的第一天)
* Calendar.DATE 当前日期是几号
* */
// 获取当前日期是当周的第i天
int i = calendar.get(Calendar.DAY_OF_WEEK) - 1;
// 获取当前日期所在周的第一天
calendar.add(Calendar.DATE , -i+1);
System.out.println("当前日期所在周的周一是:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
// 获取当前日期所在周的最后一天
calendar.add(Calendar.DATE, 6);
System.out.println("当前日期所在周的周日是:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
}