获取零时时间戳、字符串、日期:
代码示例:
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MILLISECOND, 0);
long nowDay = calendar.getTimeInMillis()/1000;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
calendar.add (Calendar.DATE, -1);//日
long prevDay = calendar.getTimeInMillis()/1000;
String day = sdf.format(new Date(calendar.getTimeInMillis()));
log.info("前一天:{}, 今天:{}, day:{}", prevDay, nowDay, day);
注意:设置时区、毫秒运算
场景一,获取本周到今日的日期列表
/**
* 根据当前日期计算所在周的日期(周一到当前)
*
* @param time
* @return date
*/
public static String[] getWeekInterval(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
/**
* 设置日历日期为本周的周一
* 循环取当前的星期和周一做比对,如果不是周一,设置日历往过去推一天,直到设置周一成功
*/
int n =1;
while (cal.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
cal.add(Calendar.DAY_OF_MONTH,-1);
n++;
}
//当前周日期数组
String[] currentWeekDays = new String[n];
//日期格式化
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
currentWeekDays[0] = df.format(cal.getTime());
for (int i = 1; i < currentWeekDays.length; i++) {
cal.add(Calendar.DAY_OF_MONTH,1);
currentWeekDays[i] = df.format(cal.getTime());
}
//打印当前周所有日期
//System.out.println(Arrays.asList(currentWeekDays));
return currentWeekDays;
}
场景一,获取本月到今日的日期列表
/**
* 根据当前日期计算所在月的日期(1号到当前)
*
* @param time
* @return date
*/
public static String[] getMonthInterval(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int day = cal.get(Calendar.DAY_OF_MONTH);
//当前周日期数组
String[] currentWeekDays = new String[day];
//日期格式化
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
currentWeekDays[day-1] = df.format(cal.getTime());
for (int i = day-2; i >= 0; i--) {
cal.add(Calendar.DAY_OF_MONTH, -1);
currentWeekDays[i] = df.format(cal.getTime());
}
//打印当前周所有日期
//System.out.println(Arrays.asList(currentWeekDays));
return currentWeekDays;
}
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse("2021-04-09");
getMonthInterval(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}