java8 新的时期和时间API

        java.time包中提供了许多新类。

       LocalDate:获取日期

		LocalDate date1 = LocalDate.of(2017, 8, 11);
		LocalDate date2 = LocalDate.now();
		int year = date1.getYear();
		int month = date1.getMonthValue();
		int day = date1.getDayOfMonth();
		DayOfWeek dayOfWeek = date1.getDayOfWeek();
		Month  month2 = date1.getMonth();
       还可以使用get方法得到值,参数为TemporalField接口,可以传入实现类ChronoField枚举类型。

		LocalDate date1 = LocalDate.of(2017, 8, 11);
		int year = date1.get(ChronoField.YEAR);
		int month = date1.get(ChronoField.MONTH_OF_YEAR);
		int day = date1.get(ChronoField.DAY_OF_MONTH);
		int dayOfWeek = date1.get(ChronoField.DAY_OF_WEEK);
       LocalTime:获取时间

		LocalTime time1 = LocalTime.of(12, 12, 12);
		LocalTime time2 = LocalTime.now();
		int hour = time1.get(ChronoField.HOUR_OF_DAY);
		int minute = time1.get(ChronoField.MINUTE_OF_HOUR);
		int second = time1.get(ChronoField.SECOND_OF_MINUTE);
		int h = time2.getHour();
		int m = time2.getMinute();
		int s = time2.getSecond();
		int n = time2.getNano();
      还可以把字符串转为LocalDate和LocalTime:

		LocalDate date = LocalDate.parse("2017-01-12");
		LocalTime time = LocalTime.parse("11:11:11");

      parse方法还可以传递DateTimeFormatter参数。

      LocalDateTime:日期和时间

		LocalDate date = LocalDate.now();
		LocalTime time = LocalTime.now();
		LocalDateTime dateTime1 = LocalDateTime.now();
		LocalDateTime dateTime2 = LocalDateTime.of(date, time);
		LocalDateTime dateTime3 = LocalDateTime.parse("2017-08-11 11:11:11");
		LocalDateTime dateTime4 = date.atTime(time);
	    LocalDateTime dateTime5 = time.atDate(date);
	    LocalDate date1 = dateTime1.toLocalDate();
	    LocalTime time1 = dateTime1.toLocalTime();
      Instant类表示的是1970-1-1到现在的秒数。

		Instant instant = Instant.now();
		Instant instant2 = Instant.ofEpochMilli(System.currentTimeMillis());
		Instant instant3 = Instant.ofEpochSecond(instant.getEpochSecond());
		Instant instant4 = Instant.parse("2017-01-01T11:11:11.12Z");
     Duration和Period是用来计算间隔的。Duration一般用于计算秒与纳秒之间的间隔。Period用于计算日期间隔。

		Duration duration1 = Duration.between(LocalTime.of(11, 11), LocalTime.of(11, 12));
		Duration duration2 = Duration.ofMinutes(3);
		Duration duration3 = Duration.parse("PT15M");//15分钟
		Period period1 = Period.between(LocalDate.of(2017, 7, 1), LocalDate.now());
		Period period2 = Period.of(1, 1, 1);
		Period period3 = Period.ofDays(2);
		Period period4 = Period.parse("P-6M3D");//-6月+3天
     上面的类都是不可改变对象,和String对象一样。每次修改操作都会生成一个新的对象。
     日期时间修改:

		LocalDate date = LocalDate.now();
		date = date.withDayOfMonth(3);<!--day变为3-->
		date = date.with(ChronoField.DAY_OF_MONTH, 11);<!--day为11-->
		date = date.minusDays(5);<!--当前日期减去5天-->
		date = date.plusDays(12);<!--当前日期加上12天--><!--其他类都有类似操作-->
     用TemporalAdjusters类的方法操作日期时间,可以更加灵活的处理日期时间。例如把日期变为这个月的第一天,或者把日期变为下一个星期4

		LocalDate date = LocalDate.now();
		date = date.with(TemporalAdjusters.lastDayOfMonth());
		date = date.with(TemporalAdjusters.dayOfWeekInMonth(7, DayOfWeek.SATURDAY));
     时间日期格式化:

		LocalDate date = LocalDate.now();
		String s1 = date.format(DateTimeFormatter.BASIC_ISO_DATE);//20170811
		String s2 = date.format(DateTimeFormatter.ISO_LOCAL_DATE);//2017-08-11
		String s3 = date.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));//11/08/2017
		LocalDate date2 = LocalDate.parse("11/08/2017", DateTimeFormatter.ofPattern("dd/MM/yyyy"));
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值