JavaSE_Date
1.Date类,DateFormat抽象类,Calender类!
- Date类为日期类,描述时间对象。
- DateFormat抽象类为日期格式化类,可以将日期格式化成为字符串。
DateFormat simple = new SimpleDateFormat();
(1)String format(Date date);将日期对象转化为字符串。
(2)Date parse(String source);将字符串转化为日期对象。
- Calender类为日历类,可以获取日期的年份,月份,周,等等。。。
// "当前日期"后10天是:<注意这里不是使用单例设计模式>
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 10);
System.out.println(calendar.getTime());
// 当前日期10年后
calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, 10);
System.out.println(calendar.getTime());
// 设置日期为1998年8月16
calendar.set(1998, 8, 16);
System.out.println(calendar.getTime());
// 获取年份,月份,日期,周
calendar = Calendar.getInstance();
System.out.println("年份" + calendar.get(Calendar.YEAR));
System.out.println("月份" + (calendar.get(Calendar.MONTH)+1));
System.out.println("日期" + calendar.get(Calendar.DATE));
System.out.println("周" + (calendar.get(Calendar.DAY_OF_WEEK)-1));
// 获取最大值
System.out.println("这一年有:"+calendar.getMaximum(Calendar.DAY_OF_YEAR)+"天");
System.out.println("这一月有:"+calendar.getMaximum(Calendar.DAY_OF_MONTH)+"天");
2.LocalDate类,LocalTime类,LocalDateTime类,ZonedDateTime类,ZoneId类。
- LocalDate类为日期类,只包含年,月,日。
- LocalTime类为时间类,只包含小时,分钟,秒。
- LocalDateTime类既包含日期也包含时间,所以包含年,月,日,小时,分钟,秒,毫秒。
- ZonedDateTime类在LocalDateTime类的基础上还包含了时区。
- Zoneld类包含了全球的时区信息。
// 获取当前时间
LocalDate now = LocalDate.now();
// 获取各个时间
System.out.println("年份:" + now.getYear());
System.out.println("月份:" + now.getMonth());//月份名称
System.out.println("月份:" + now.getMonthValue());//获取月份值
System.out.println("日期:" + now.getDayOfMonth());
System.out.println("星期:" + now.getDayOfWeek());//获取星期名称
//获取星期值1~7 1代表星期一,2代表星期二,7代表星期天
System.out.println("星期:" + now.getDayOfWeek().getValue());
System.out.println("当前年的第" + now.getDayOfYear() + "天。");
// N年前与N年后
System.out.println(now + "的三年前:" + now.minusYears(3));
System.out.println(now + "的三年后:" + now.plusYears(3));
// N月前与N月后
System.out.println(now + "的三个月前:" + now.minusMonths(3));
System.out.println(now + "的三个月后:" + now.plusMonths(3));
// N天前与N天后
System.out.println(now + "的三天前:" + now.minusDays(3));
System.out.println(now + "的三天后:" + now.plusDays(3));
// N周前与N周后
System.out.println(now + "的三个星期前:" + now.minusWeeks(3));
System.out.println(now + "的三个星期后:" + now.plusWeeks(3));
// 判断闰年
System.out.println(now.getYear()+"年是否为闰年?" + now.isLeapYear());
// 重新设置年,月,日,一年中的第几天
LocalDate date1 = now.withYear(2006);
System.out.println(date1);
LocalDate date2 = now.withMonth(6);
System.out.println(date2);
LocalDate date3 = now.withDayOfMonth(6);
System.out.println(date3);
LocalDate date4 = now.withDayOfYear(3);
System.out.println(date4);
// 获取当前月份的第一天与最后一天
LocalDate date5 = now.with(TemporalAdjusters.firstDayOfMonth());
System.out.println(date5);
LocalDate date6 = now.with(TemporalAdjusters.lastDayOfMonth());
System.out.println(date6);
// 获取该月的第N个星期x
// 第一个星期天
LocalDate date7 = now.with(TemporalAdjusters.dayOfWeekInMonth(1, DayOfWeek.SUNDAY));
System.out.println(date7);
// 获取本周的星期天
LocalDate date8 = now.with(DayOfWeek.SUNDAY);
System.out.println(date8);
// 距离当前日期一月零三天是
System.out.println(LocalDate.now().plusMonths(1).plusDays(3));
// 计算当月第十天的日期
System.out.println(LocalDate.now().withDayOfMonth(10));
// 计算当年第93天
System.out.println(LocalDate.now().withDayOfYear(93));
3.Date类和ZonedDateTime类之间的转换。
//旧的转新的 Date类转ZonedDateTime类
Date oldDate = new Date();
Instant instant = oldDate.toInstant();
ZonedDateTime newDate = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());
System.out.println("旧版:"+ oldDate);
System.out.println("新版:"+ newDate);
//新的转旧的 ZonedDateTime类转Date类
ZonedDateTime newTime = ZonedDateTime.now();
//获取秒 然后乘以1000则为毫秒。newTime.toInstant().toEpochMilli();(获取准确的毫秒。)
Date oldTime = new Date(newTime.toEpochSecond()*1000);
System.out.println("旧版:"+ oldTime);
System.out.println("新版:"+ newTime);
4.ChronoUnit
一组标准的日期时间单位。这组单元提供基于单元的访问来操纵日期,时间或日期时间。
例:计算两个时间差。
//两个LocalDate对象
LocalDate local1 = LocalDate.of(2020, 3, 1);
LocalDate local2 = LocalDate.of(2020, 4, 1);
//两个时间相隔多少年
ChronoUnit.YEARS.between(local1, local2);
//两个时间相隔多少周
ChronoUnit.WEEKS.between(local1, local2);
//两个时间相隔多少天
ChronoUnit.DAYS.between(local1, local2);