JavaSE进阶
10.8.1 java.time
1、本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)
LocalDate代表IOS格式(yyyy-MM-dd)的日期,可以存储 生日、纪念日等日期。
LocalTime表示一个时间,而不是日期
LocalDateTime是用来表示日期和时间的,这是一个最常用的类之一。
|
描述 |
now() / now(ZoneId zone) |
静态方法,根据当前时间创建对象/指定时区的对象 |
of() |
静态方法,根据指定日期/时间创建对象 |
getDayOfMonth()/getDayOfYear() |
获得月份天数(1-31) /获得年份天数(1-366) |
getDayOfWeek() |
获得星期几(返回一个 DayOfWeek 枚举值) |
getMonth() |
获得月份, 返回一个 Month 枚举值 |
getMonthValue() / getYear() |
获得月份(1-12) /获得年份 |
getHours()/getMinute()/getSecond() |
获得当前对象对应的小时、分钟、秒 |
withDayOfMonth()/withDayOfYear()/withMonth()/withYear() |
将月份天数、年份天数、月份、年份修改为指定的值并返回新的对象 |
with(TemporalAdjuster t) |
将当前日期时间设置为校对器指定的日期时间 |
plusDays(), plusWeeks(), plusMonths(), plusYears(),plusHours() |
向当前对象添加几天、几周、几个月、几年、几小时 |
minusMonths() / minusWeeks()/minusDays()/minusYears()/minusHours() |
从当前对象减去几月、几周、几天、几年、几小时 |
plus(TemporalAmount t)/minus(TemporalAmount t) |
添加或减少一个 Duration 或 Period |
isBefore()/isAfter() |
比较两个 LocalDate |
isLeapYear() |
判断是否是闰年(在LocalDate类中声明) |
format(DateTimeFormatter t) |
格式化本地日期、时间,返回一个字符串 |
parse(Charsequence text) |
将指定格式的字符串解析为日期、时间 |
//now() @Test public void testLocalDateTime(){ LocalDate date = LocalDate.now(); LocalTime time = LocalTime.now(); LocalDateTime datetime = LocalDateTime.now(); } |
//of()或parse @Test public void testLocalDate() { // LocalDate date = LocalDate.now(); // LocalDate date = LocalDate.of(2017, 3, 20); LocalDate date = LocalDate.parse("2017-03-12"); } |
public static void main(String[] args) { LocalDateTime t = LocalDateTime.now(); System.out.println("这一天是这一年的第几天:"+t.getDayOfYear()); System.out.println("年:"+t.getYear()); System.out.println("月:"+t.getMonth()); System.out.println("月份值:"+t.getMonthValue()); System.out.println("日:"+t.getDayOfMonth()); System.out.println("星期:"+t.getDayOfWeek()); System.out.println("时:"+t.getHour()); System.out.println("分:"+t.getMinute()); System.out.println("秒:"+t.getSecond()); System.out.println(t.getMonthValue()); } |
@Test public void testLocalDate2() { LocalDate date = LocalDate.now(); //withXxx()方法,不改变原来的date对象,返回一个新的对象,不可变性 // LocalDate date2 = date.withDayOfMonth(1);//获取这个月的第一天 LocalDate date2 = date.with(TemporalAdjusters.firstDayOfMonth());// 获取这个月的第一天 System.out.println(date2); // 获取这个月的最后一天 LocalDate date3 = date.with(TemporalAdjusters.lastDayOfMonth()); System.out.println(date3); //45天后的日期 LocalDate date4 = date.plusDays(45); System.out.println(date4); //20天前的日期 LocalDate date5 = date.minusDays(20); System.out.println(date5); boolean before = date.isBefore(date5); System.out.println(date+"是否比"+date5+"早" + before); System.out.println(date+"是否是闰年:"+date.isLeapYear()); } |
MonthDay month = MonthDay.of(8, 14); MonthDay today = MonthDay.from(date); System.out.println("今天是否是生日:" + month.equals(today)); |