Java8 随笔记录(六)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java8 随笔记录(六)

Java8 随笔记录(六)

 2016/5/23 5:31:50  study121007  程序员俱乐部  我要评论(0)
  • 摘要:在java8中引入了新的日期和时间库,整合了很多Joda-Time的一些特性。1)LocalDate+LocalTime+LocalDateTimepublicvoidtestLocalDate(){LocalDatedate=LocalDate.of(2016,05,22);println(date.getYear());//2016println(date.getMonth());//MAYprintln(date.getMonthValue());//5println(date
  • 标签:笔记 Java 随笔

class="p1">在java8中引入了新的日期和时间库,整合了很多Joda-Time的一些特性。

1)LocalDate + LocalTime + LocalDateTime

public void testLocalDate(){
     LocalDate date = LocalDate.of(2016, 05, 22);
println(date.getYear());        //2016
println(date.getMonth());       //MAY
println(date.getMonthValue());	//5
println(date.getDayOfYear());	//143
println(date.getDayOfMonth());	//22
println(date.getDayOfWeek());	//SUNDAY
println(date.lengthOfYear());	//366
println(date.lengthOfMonth());	//31
println(date.isLeapYear());	//true
println(date.now());	//2016-05-22
println(date.toEpochDay());	//16943
LocalDate d = date.parse("2016-05-22"); //此处指允许使用ISO_LOCAL_DATE格式
println(d);
}
public void testLocalTime(){
LocalTime time = LocalTime.of(13, 04);
println(time.getHour());        //13
println(time.getMinute());      //4
println(time.getSecond());	//0
println(time.getNano());	//0
time = LocalTime.parse("13:04:59");  //此处也只允许使用ISO_LOCAL_TIME格式
println(time);
}

public void testLocalDateTime(){
LocalDate date = LocalDate.of(2016, 05, 22);
LocalTime time = LocalTime.of(13, 04);
LocalDateTime ldt = LocalDateTime.of(date, time);
}

?

2)Duration(持续时间) + Period(一段时间)

public void testDurationAndPeriod(){
     println(Duration.ofDays(7));   // PT168H
     println(Duration.ofMinutes(7));   // PT7M
     println(Duration.of(7, ChronoUnit.DAYS)); // PT168H
     println(Period.ofDays(7));   // P7D
     println(Period.ofWeeks(7));	// P49D
     println(Period.of(1, 1, 7)); // P1Y1M7D
}

还包含以下其他的方法:

between: 创建两个时间点之间的interval(间隔)。

from: 由一个临时时间点创建interval。

of: 由它的组成部分创建interval。

parse: 由字符串创建interval。

addTo: 创建该interval的副本,并将其叠加到某个指定的temporal对象。

get: 读取该interval的状态。

isNegative: 检查该interval是否为负值,不包含0。

isZero: 检查该interval的时长是否为0。

minus: 通过减去一定的时间创建该interval的副本。

multipliedBy: 将interval的值乘以某个标量创建该interval的副本。

negated: 以忽略某个时长的方式创建该interval的副本。

plus: 以增加某个指定时长的方式来创建该interval的副本。

subtractFrom: 以指定的temporal对象减去该interval。

?

?

3)LocalDate对象的相关操作

public void testLocalDateOperation(){
     LocalDate date = LocalDate.of(2016, 05, 22);
     // 以绝对方式修改
     date = date.withYear(2017);
     println(date);  // 2017-05-22
     date = date.withMonth(10);
     println(date);	// 2017-10-22
     date = date.withDayOfMonth(7);
     println(date);	// 2017-10-07
     // 以相对方式修改
     date = date.plusYears(3);
     println(date);	// 2020-10-07
     date = date.minusMonths(9);
     println(date);	// 2020-01-07
     date = date.plusDays(6);
     println(date);	// 2020-01-13
}

还可以使用java.time.temporal.TemporalAdjusters来进行操作:

dayOfWeekInMonth: 返回同一个月中第x周的第y天,x为负数,则表示相对当前天的上一周。

firstDayOfMonth: 返回当前月的第一天

firstDayOfNextMonth: 返回下个月的第一天。

firstDayOfNextYear: 返回下年的第一天。

firstDayOfYear: 返回当年的第一天。

firstInMonth: 返回同一个月中,第一个符合指定星期数的日期。

lastDayOfMonth: 返回下个月的最后一天。

lastDayOfYear: 返回今年的最后一天。

lastInMonth: 返回同一个月中,最后一个符合指定星期数的日期。

next/previous: 返回当前日期向前或向后,第一个符合指定星期数的日期(不包含自己)。

nextOrSame/previousOrSame: 在上一条的基础上,把当前日期值(自己)也放进去计算。?

?

还有一些比如时区、历法这些的就不介绍了。

发表评论
用户名: 匿名