1、LocalDatecode
一、LocalDate并不包含当天的时间信息,也不附带任何与时区有关的信息。对象
二、建立方法blog
(1)经过静态工厂方法建立一个LocalDate实例。 LocalDate date = LocalDate.of(2014,3,8) (2)LocalDate today = LocalDate.now(); (3)LocalDate date = LocalDate.parse("2014-03-18");
三、读取LocalDate对象的值three
(1)直接读取get
LocalDate date = LocalDate.of(2014,3,18); int year = date.getYear();//2014 Month month = date.getMonth(); //MARCH int day = date.getDayOfMonth(); //18 DayOfWeek dow = date.getDayOfWeek();//TUESDAY int len = date.lengthOfMonth(); //31 boolean leap = date.isLeapYear(); //false
(2)使用TemporalFieldit
LocalDate date = LocalDate.of(2014,3,18); int year = date.get(ChronoField.YEAR);//2014 int month = date.get(ChronoField.MONTH_OF_YEAR); // 3 int day = date.get(ChronoField.DAY_OF_MONTH); //18
2、LocalTimeio
一、建立方法ast
(1)LocalTime time1 = LocalTime.of(13,3);//时,分 (2)LocalTime time2 = LocalTime.of(13,3,18);//时,分,秒 (3)LocalTime time3 = LocalTime.parse("13:45:50");
二、读取LocalTime的值date
int hour = time3.getHour(); int minute = time3.getMinute(); int second = time3.getSecond();
3、合并日期和时间方法
LocalDate date = LocalDate.parse("2014-03-18"); LocalTime time = LocalTime.of(13,3);//时,分 LocalDateTime dt1 = LocalDateTime.of(2014,Month.AUGUST,18,13,45,20); LocalDateTime dt2 = LocalDateTime.of(date,time); LocalDateTime dt3 = date.atTime(time); LocalDateTime dt4 = date.atTime(13,3); LocalDateTime dt5 = date.atTime(13,3,30); LocalDateTime dt6 = time.atDate(date); LocalDate date1 = dt6.toLocalDate(); LocalTime time3 = dt6.toLocalTime();
4、机器的日期和时间格式
一、建立方法
Instant.ofEpochSecond(3); Instant.ofEpochSecond(3,0); Instant.ofEpochSecond(2,1000000000); Instant.ofEpochSecond(4,-1000000000); Instant.now();
5、Duration
用来表示两个LocalDateTime,两个LocalTime,两个Instant之间的间隔时长。
一、建立方法
Instant instant1 = Instant.ofEpochSecond(3); Instant instant2 = Instant.ofEpochSecond(3,0); LocalTime time1 = LocalTime.of(13,3);//时,分 LocalTime time2 = LocalTime.of(13,3);//时,分 LocalDateTime dt1 = LocalDateTime.of(2014,Month.AUGUST,18,13,45,20); LocalDateTime dt2 = LocalDateTime.of(2014,Month.AUGUST,18,13,45,20); Duration d1 = Duration.between(instant1,instant2); Duration d2 = Duration.between(time1,time2); Duration d3 = Duration.between(dt1,dt2);
二、直接建立对应实例
Duration threeMinutes = Duration.ofMinutes(3); Duration threeMinutes = Duration.of(3, ChronoUnit.MINUTES);
6、Period
以年月日的方式对多个时间单位建模。该类的工厂方法between,能够获得两个LocalDate之间的时长
一、建立方法
LocalDate date1 = LocalDate.parse("2014-03-18"); LocalDate date2 = LocalDate.parse("2014-03-18"); Period period = Period.between(date2,date1);
二、直接建立对应实例
Period tenDays = Period.ofDays(10); Period tenWeeks = Period.ofWeeks(10); Period tenYearsSixMonthOneDay = Period.of(10,6,1);
7、操做日期
使用以下方法操做日期后,返回一个修改了属性的对象。它们都不会修改原来的对象。
一、以比较直观的方式操做LocalDate的属性
LocalDate date1 = LocalDate.parse("2014-03-18"); LocalDate date2 = date1.withYear(2011);//2011-03-18 LocalDate date3 = date1.withDayOfMonth(24);//2011-03-24 LocalDate date4 = date1.with(ChronoField.MICRO_OF_DAY,9);//2011-09-24
二、采用with方法,它接收一个TemporalField对象,全部日期和时间API都实现了get和with方法,它们将TemporalField的读取和修改区分开。
LocalDate date1 = LocalDate.parse("2014-03-18"); LocalDate startDate =date1.with(TemporalAdjusters.firstDayOfMonth()); LocalDate endtDate = date1.with(TemporalAdjusters.firstDayOfMonth());
三、以相对方式修改LocalDate对象的属性
LocalDate date1 = LocalDate.parse("2014-03-18"); LocalDate date2 = date1.plusWeeks(1);//2014-03-25 LocalDate date3 = date1.minusYears(3);//2011-03-25 LocalDate date4 = date1.plus(6,ChronoUnit.MONTHS);//2011-09-25
8、更复杂的操做
好比将日期调整到下个周日,下个工做日,或者本月的最后一天,,可以使用重载版本的with,向其传递一个提供了更多定制化选择的TemporalAdjuster对象,更加灵活的处理日期。
LocalDate date1 = LocalDate.parse("2014-03-18"); LocalDate date2 = date1.with(nextOrSame(DayOfWeek.SATURDAY));//2014-03-23 LocalDate date3 = date1.with(lastDayOfMonth());//2011-03-31