阅读背景:

时间总结 --获取某天零点,某月前,一号零点......

来源:互联网 
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 获取零点 获取某天的零点时间戳 /** * 获取传入参数时间戳所在天数的零点日期 时间戳



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: