1 获取前几个月每个月的第一天和最后一天
(1)我们先来看看获取这个月的第一天和最后一天的日期的代码:
public static void main(String[] args) {
SimpleDateFormat sdfMonthDay = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
System.out.println("现在是什么时间: " + sdfMonthDay.format(calendar.getTime()));
calendar.set(Calendar.DAY_OF_MONTH, 1);
System.out.println("这个月的一号是什么时候.....: " + sdfMonthDay.format(calendar.getTime()));
int maxCurrentMonthDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("这个月有几天:" + maxCurrentMonthDay);
calendar.set(Calendar.DAY_OF_MONTH, maxCurrentMonthDay);
System.out.println("这个月最后一天是什么时候:" + sdfMonthDay.format(calendar.getTime()));
}
输出:
现在是什么时间: 2019-08-29
这个月的一号是什么时候.....: 2019-08-01
这个月有几天:31
这个月最后一天是什么时候:2019-08-31
(2)获取上个月的第一天和最后一天的代码:
public static void main(String[] args) {
SimpleDateFormat sdfMonthDay = new SimpleDateFormat("yyyy-MM-dd");
Calendar previousCalendar = Calendar.getInstance();
previousCalendar.add(Calendar.MONTH, -1);
System.out.println("上个月的现在是什么时间: " + sdfMonthDay.format(previousCalendar.getTime()));
previousCalendar.set(Calendar.DAY_OF_MONTH, 1);
System.out.println("上个月的一号是什么时候.....: " + sdfMonthDay.format(previousCalendar.getTime()));
int maxPreviousMonthDay = previousCalendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("上个月的有几天.....: " + maxPreviousMonthDay);
previousCalendar.set(Calendar.DAY_OF_MONTH, maxPreviousMonthDay);
System.out.println("上个月的最后一天是什么时候.....: " + sdfMonthDay.format(previousCalendar.getTime()));
}
输出:
这个月最后一天是什么时候:2019-08-31
上个月的现在是什么时间: 2019-07-29
上个月的一号是什么时候.....: 2019-07-01
上个月的有几天.....: 31
上个月的最后一天是什么时候.....: 2019-07-31
2 昨天这个时候
public static void main(String[] args) {
SimpleDateFormat sdfMonthDay = new SimpleDateFormat("yyyy-MM-dd");
Calendar yesterdayCalendar = Calendar.getInstance();
yesterdayCalendar.add(Calendar.DATE, -1);
System.out.println("昨天是什么时候.....: " + sdfMonthDay.format(yesterdayCalendar.getTime()));
}
输出:
昨天是什么时候.....: 2019-08-28
3 Java8 中的时间操作
(1)LocalDate、LocalTime、LocalDateTime
Java8的这种时间API是为了弥补之前的Java的时间API的一些问题,比如之前的API不是线程安全的,
LocalDate 这个是日期相关的工具类,在这里你可以用比较简单的方式取得日期的年月份的数据
LocalDate date = LocalDate.now();
System.out.println("date: " + date);
System.out.println("date.getYear(): " + date.getYear());
System.out.println("date.getMonth(): " + date.getMonth().getValue());
System.out.println("date.getDayOfMonth(): " + date.getDayOfMonth());
System.out.println("date.getDayOfWeek(): " + date.getDayOfWeek().getValue());
System.out.println("date.getDayOfYear(): " + date.getDayOfYear());
System.out.println("date.lengthOfMonth(): " + date.lengthOfMonth());
System.out.println("date.lengthOfYear(): " + date.lengthOfYear());
LocalDate date1 = LocalDate.of(2019, 3, 18);
System.out.println("date1: " + date1);
输出
date: 2019-09-01
date.getYear(): 2019
date.getMonth(): 9
date.getDayOfMonth(): 1
date.getDayOfWeek(): 7
date.getDayOfYear(): 244
date.lengthOfMonth(): 30
date.lengthOfYear(): 365
date1: 2019-03-18
LocalTime 这个是时间相关的工具类,在这里你可以用比较简单的方式取得时间的小时、分组、秒的数据
LocalTime localTime = LocalTime.now();
System.out.println("localTime: " + localTime);
LocalTime localTime1 = LocalTime.of(12, 1, 1);
System.out.println("localTime1: " + localTime1);
输出
localTime: 20:28:51.046843200
localTime1: 12:01:01
LocalDateTime 这个更像是日期和时间的结合体,你可用使用他轻而易举的创建时间。
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("localDateTime: " + localDateTime);
System.out.println("localDateTime.getHour(): " + localDateTime.getHour());
System.out.println("localDateTime.getMinute(): " + localDateTime.getMinute());
System.out.println("localDateTime.getSecond(): " + localDateTime.getSecond());
输出
localDateTime: 2019-09-01T20:28:51.046843200
localDateTime.getHour(): 20
localDateTime.getMinute(): 28
localDateTime.getSecond(): 51