Time
获取零点
获取某天的零点时间戳
/**
* 获取传入参数时间戳所在天数的零点日期 时间戳
* @param time
* @return
*/
public static Long getZeroDate (Long time) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date(time));
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime().getTime();
}
}
// 法二
long millsec = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0)
.toEpochSecond(ZoneOffset.ofHours(8)) * 1000;
获取几月前1号0点的时间戳
/**
* 获取几月前1号0点0分0秒的时间戳
* @param dateTimeMillis
* @return
*/
public static Long getMonthBegin(Long dateTimeMillis,int monthago){
Calendar c = Calendar.getInstance();
c.setTime(new Date(dateTimeMillis));
Date date = new Date(dateTimeMillis);
date.setDate(1);
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
if(date.getMonth() - 1 <= 0){
date.setYear(date.getYear() - 1);
date.setMonth(12);
}else {
date.setMonth(date.getMonth() - monthago);
}
return date.getTime();
}
/**
* 获取指定时间戳所在月份开始的时间戳/秒
* @param dateTimeMillis 指定时间戳/毫秒
* @return
*/
public static Long getMonthBegin(Long dateTimeMillis) {
Calendar c = Calendar.getInstance();
c.setTime(new Date(dateTimeMillis));
//设置为1号,当前日期既为本月第一天
c.set(Calendar.DAY_OF_MONTH, 1);
//将小时至0
c.set(Calendar.HOUR_OF_DAY, 0);
//将分钟至0
c.set(Calendar.MINUTE, 0);
//将秒至0
c.set(Calendar.SECOND,0);
//将毫秒至0
c.set(Calendar.MILLISECOND, 0);
// 获取本月第一天的时间戳
return c.getTimeInMillis() / 1000;
}
获取几天前的0点的日期
/**
* 获取相应天数前的0点的日期
* 相应天数后 把num 前面的- 取了
* @param num
* @return Long
*/
public static Long subDate (int num) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.add(Calendar.DATE, -num);//相应天数后
return calendar.getTime().getTime();
}
获取相应天前的日期yyyyMMdd
/**
* 获取相应天数前的日期yyyyMMdd
* @param num
* @return String
*/
public static String subDateString (int num) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -num);
Date date = calendar.getTime();
return format.format(date);
}
获取指定时间戳所在月份15号的时间戳/秒
/**
* 获取指定时间戳所在月份15号的时间戳/秒
* @param dateTimeMillis 指定时间戳/毫秒
* @return
*/
public static Long getMonthMiddle(Long dateTimeMillis) {
Calendar c = Calendar.getInstance();
c.setTime(new Date(dateTimeMillis));
//设置为当月最后一天
c.set(Calendar.DAY_OF_MONTH, 15);
//将小时至23
c.set(Calendar.HOUR_OF_DAY, 23);
//将分钟至59
c.set(Calendar.MINUTE, 59);
//将秒至59
c.set(Calendar.SECOND,59);
//将毫秒至999
c.set(Calendar.MILLISECOND, 999);
// 获取本月最后一天的时间戳
return c.getTimeInMillis() / 1000;
}
获取指定时间戳所在月份结束的时间戳/秒
/**
* 获取指定时间戳所在月份结束的时间戳/秒
* @param dateTimeMillis 指定时间戳/毫秒
* @return
*/
public static Long getMonthEnd(Long dateTimeMillis) {
Calendar c = Calendar.getInstance();
c.setTime(new Date(dateTimeMillis));
//设置为当月最后一天
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
//将小时至23
c.set(Calendar.HOUR_OF_DAY, 23);
//将分钟至59
c.set(Calendar.MINUTE, 59);
//将秒至59
c.set(Calendar.SECOND,59);
//将毫秒至999
c.set(Calendar.MILLISECOND, 999);
// 获取本月最后一天的时间戳
return c.getTimeInMillis() / 1000;
}
测试Calendar
public class TestCalendar {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
//java.util.GregorianCalendar[time=1610087297156,areFieldsSet=true,areAllFieldsSet=true,.....
calendar.setTime(new Date());
System.out.println(calendar);
//java.util.GregorianCalendar[time=1610087297156,areFieldsSet=true,areAllFieldsSet=true,.....
System.out.println(calendar.getTime());//Fri Jan 08 14:28:17 CST 2021
System.out.println(calendar.getTime().getTime());//1610087297165
Date date = new Date();
System.out.println(date);//Fri Jan 08 14:28:17 CST 2021
System.out.println(date.getTime());//1610087297168
}
}
SimpleDateFormat 日期格式转换
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 没有getTime获取的是如下格式
System.out.println(simpleDateFormat.parse("2021-01-01 00:00:00"));//Fri Jan 01 00:00:00 CST 2021
// 获取某个确定时间的 时间戳
long time = simpleDateFormat.parse("2021-01-01 00:00:00").getTime();
System.out.println(time);//1609430400000
// 把Date日期格式转化为 SimpleDateFormat 设定好的格式
String format = simpleDateFormat.format(new Date());
System.out.println(format);//2021-01-08 15:27:39
//parse 与 format 方法的区别
//simpleDateFormat.parse("想要获取时间戳的固定格式的时间") 方法获取:自己写好固定格式的时间戳;
//simpleDateFormat.format(new Date()) 传入Date数据类型获取 定义好格式的时间
时间戳与date 默认类型的相互转换
Time
获取零点
获取某天的零点时间戳
/**
* 获取传入参数时间戳所在天数的零点日期 时间戳