类型对应如下: 1、本日;2、本周;3、本月;4、本季度;5、本年; 当获取本周时间时,时区使用中国时区
package com.sinochem.demo;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.TimeZone;
public class DateUtils {
public static Map<String, String> getStartAndEndTime(int type) {
Map<String, String> dateRange = new HashMap<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 设置时区为中国时区
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 设置时区为中国时区
switch (type) {
case 1: // 本日
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
dateRange.put("startTime", sdf.format(calendar.getTime()));
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
dateRange.put("endTime", sdf.format(calendar.getTime()));
break;
case 2: // 本周
if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
calendar.add(Calendar.DAY_OF_YEAR,-1);
}
calendar.add(Calendar.DAY_OF_WEEK, -(calendar.get(Calendar.DAY_OF_WEEK) - 2));
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
dateRange.put("startTime", sdf.format(calendar.getTime()));
calendar.add(Calendar.DAY_OF_WEEK, 6);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
dateRange.put("endTime", sdf.format(calendar.getTime()));
break;
case 3: // 本月
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
dateRange.put("startTime", sdf.format(calendar.getTime()));
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DAY_OF_MONTH, -1);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
dateRange.put("endTime", sdf.format(calendar.getTime()));
break;
case 4: // 本季度
int month = calendar.get(Calendar.MONTH);
int quarterStartMonth = 0;
if (month >= 0 && month <= 2) {
quarterStartMonth = 0;
} else if (month >= 3 && month <= 5) {
quarterStartMonth = 3;
} else if (month >= 6 && month <= 8) {
quarterStartMonth = 6;
} else if (month >= 9 && month <= 11) {
quarterStartMonth = 9;
}
calendar.set(Calendar.MONTH, quarterStartMonth);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
dateRange.put("startTime", sdf.format(calendar.getTime()));
calendar.add(Calendar.MONTH, 3);
calendar.add(Calendar.DAY_OF_MONTH, -1);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
dateRange.put("endTime", sdf.format(calendar.getTime()));
break;
case 5: // 本年
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
dateRange.put("startTime", sdf.format(calendar.getTime()));
calendar.add(Calendar.YEAR, 1);
calendar.add(Calendar.DAY_OF_MONTH, -1);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
dateRange.put("endTime", sdf.format(calendar.getTime()));
break;
default:
throw new IllegalArgumentException("Invalid type");
}
return dateRange;
}
}