1、通常使用Calendar,首先需要 Calendar calendar = Calendar.getInstance();
Calendar calendar = Calendar.getInstance();
指定时间:
calendar.setTime(date);//date为日期类型 //calendar.setTime(new Date());是指定日期为今
int year = calendar.get(Calendar.YEAR);//获取年 int month = calendar.get(Calendar.MONTH) + 1;//获取月,默认1月为0 int day = calendar.get(Calendar.DATE);//获取当前日期的日 int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);//获取月份最大的天数,使用这获取最后一天时,最好在Calendar calendar = Calendar.getInstance();加上calendar.clear();清楚系统时间,避免影响,要不然获取2月份最后一天可能有问题
更多用法请查看源码,
或者参考链接https://blog.csdn.net/tiantangdizhibuxiang/article/details/77429346
https://blog.csdn.net/qq_23332015/article/details/89555438
2、Java 8之后除了向前兼容外 Calendar沒有存在的意义了
Date用于记录某一个含日期的、精确到毫秒的时间。重点在代表一刹那的时间本身。
Calendar用于将某一日期放到历法中的互动——时间和年、月、日、星期、上午、下午、夏令时等这些历法规定互相作用关系和互动。Calendar本身代表公历的一个简化缩水版,姑且叫“计算机历”。
完整的公历是格里高利历,Java SE中以GregorianCalendar类来提供相关的历法功能。
参考链接https://juejin.im/post/6844903939402383368
LocalDateTime转Date,以及设置上个月最后一天的最后一秒
LocalDateTime min = LocalDateTime.of(year, month - 1, 1, 23, 59, 59); LocalDateTime with = min.with(TemporalAdjusters.lastDayOfMonth());//设置成上个月最后一天 java.util.Date minTime = Date.from(with.atZone(ZoneId.systemDefault()).toInstant());//转Date
Date转LocalDateTime参考链接https://www.cnblogs.com/xww115/p/11413668.html
LocalDate转Date
LocalDate localDate = LocalDate.of(year, month, 1);
java.util.Date date = Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
LocalDate和Date互转参考链接https://www.cnblogs.com/liusk/p/9882217.html
Date转LocalDate:
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); int year = localDate.getYear(); int month = localDate.getMonthValue();
时间戳转Date
new Date(时间戳)