JAVA1.8--时间日期(十二)

Java1.8新时间日期API

 1.使用 LocalDate、LocalTime、LocalDateTime
 
      LocalDate、LocalTime、LocalDateTime类的实例是不可变的对象,分别表示使用ISO-8601
     日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。
     也不包含与时区相关的信息。
  
 2.Instant时间戳
 
     用于"时间戳"的运算。它是以Unix元年(传统的设定为UTC时区1970年1月1日午夜时分)
     开始所经历的秒数进行计算
 
  3.Duration和Period
      
         Duration:用于计算两个"时间"间隔
         
         Period:用于计算两个"日期"间隔
     
   4.日期的操纵
 
         1.通过withXXX方法修改LocalDate的属性
         2.TemporalAdjuster:时间校正器。有时我们可能需要获取例如:将日期吊证到"下个周日"等操作
         3.TemporalAdjusters:该类通过静态方法提供了大量的常用TemporalAdjuster的是实现
 
   5.解析与格式化
         
         java.time.format.DateTimeFormatter类:该类提供了三种格式化方法:
             
         预定义的标准格式
         语言环境相关的格式
         自定义的格式

public class DateInfo {
	
	/**
	 * 使用 LocalDate、LocalTime、LocalDateTime
	 * */
	@Test
	public void test(){
		
		LocalDate date = LocalDate.of(2020, 01, 23);
		Month month = date.getMonth();
		System.out.println(month);//JANUARY
		
		DayOfWeek dayofweek = date.getDayOfWeek();
		System.out.println(dayofweek);//THURSDAY
		
		int len = date.lengthOfMonth();
		System.out.println(len);//31
		
		int year = date.getYear();
		System.out.println(year);//2020
		
		LocalDate ld = LocalDate.parse("2020-01-23");
		System.out.println(ld);//2020-01-23
		
		LocalTime time = LocalTime.of( 9, 27, 54);
		System.out.println(time);//09:27:54
		
		LocalDateTime ldt = LocalDateTime.now();
		System.out.println(ldt);//2020-01-23T09:32:24.895
		
		LocalDateTime l1 = LocalDateTime.of(2020, 01, 23, 9, 30);
		System.out.println(l1);//2020-01-23T09:30
		
		//当前时间基础上增加3年
		LocalDateTime l2 = l1.plusYears(3);
		System.out.println(l2);//2023-01-23T09:30
		
		//当前时间基础上减去一个月
		LocalDateTime l3 = l1.minusMonths(1);
		System.out.println(l3);//2019-12-23T09:30
		System.out.println(l3.getMinute()+","+l3.getYear());//30,2019
	}
	
	/**
	 * Instant时间戳
	 * */
	@Test
	public void test1(){
		
		Instant ins = Instant.now();//默认使用的是UTC时区
		OffsetDateTime odt = ins.atOffset(ZoneOffset.ofHours(8));
		
		//2020-01-23T09:42:00.669+08:00
		System.out.println(odt);
		
		//669000000
		System.out.println(ins.getNano());
		
		//1970-01-01T00:00:05Z
		Instant ins2 = Instant.ofEpochSecond(5);
		System.out.println(ins2);
	}
	
	/**
	 *	Duration:用于计算两个“时间”间隔
	 *
	 *	Period:用于计算两个“日期”间隔
	 * */
	@Test
	public void test2(){
		
		Instant ins = Instant.now();
		try {
			Thread.sleep(1000);
		} catch (Exception e) {
			
		}
		Instant ins1 = Instant.now();
		System.out.println("所耗费时间为:"+ Duration.between(ins, ins1).getSeconds());
		
		System.out.println("------------------------------");
		LocalDate ld1 = LocalDate.now();
		LocalDate ld2 = LocalDate.of(2019, 01, 01);
		
		Period pe = Period.between(ld2, ld1);
		System.out.println(pe.getYears());//1
		System.out.println(pe.getMonths());//0
		System.out.println(pe.getDays());//22
	}
	/**
	 * 日期的操纵
	 * */
	@Test
	public void test3(){
		LocalDate date = LocalDate.now();
		//通过withAttributer方法修改LocalDate的属性
		LocalDate date1 = date.with(ChronoField.ALIGNED_WEEK_OF_YEAR,9);
		System.out.println(date1);//2020-02-27
		
		//2019-01-23
		LocalDate date2 = date.withYear(2019);
		System.out.println(date2);
		
		//2020-01-11
		LocalDate date3 = date.withDayOfMonth(11);
		System.out.println(date3);
		
		//2020-01-26
		LocalDate nextSunday = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
		System.out.println(nextSunday);
	}
	
	/**
	 * 解析与格式化
	 * */
	@Test
	public void test4(){
		
		DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss E");
		
		LocalDateTime ldt = LocalDateTime.now();
		String strDate = ldt.format(dtf);
		//2020年01月23日 10:32:19 星期四
		System.out.println(strDate);
		
		LocalDateTime newLdt = ldt.parse(strDate,dtf);
		//2020-01-23T10:32:19
		System.out.println(newLdt);
		
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值