做人第一 学习第二

java 8 时间api 使用

java 8 提供的 时间api java.time 比原来的Calendar 方便很多。主要提供了
日期类:LocalDate
时间类:LocateDateTime
时间戳操作类:Instant
时间持续时间计算:Duration
时区:ZoneId
日期间隔:Period
java 8 api 是整合了原第三方工具(org.joda.time),使用将会更加方便。

以下实例针对,日常使用的时间计算方式,进行实例验证。可以根据自己需要提取,时间工具类。
以下是具体的使用实例,建议大家都转换新的时间方式,虽然中间可能要花费些时间,但个人感觉还是值得。

public static void main(String[] args) {
		Instant first = Instant.now();		
                  // Current Time
		LocalTime time = LocalTime.now();
		System.out.println("Current Time=" + time);		
                   // Creating LocalTime by providing input arguments
		LocalTime specificTime = LocalTime.of(12, 20, 25, 40);
		System.out.println("Specific Time of Day=" + specificTime);		
                  // Try creating time by providing invalid inputs
		// Current date in "Asia/Kolkata", you can get it from ZoneId javadoc
		LocalTime timeKolkata = LocalTime.now(ZoneId.of("Asia/Kolkata"));
		System.out.println("Current Time in IST=" + timeKolkata);		
                  // Getting date from the base date i.e 01/01/1970
		LocalTime specificSecondTime = LocalTime.ofSecondOfDay(10000);
		System.out.println("10000th second time= " + specificSecondTime);	
                  // 今日
		LocalDate localDate = LocalDate.now();
		System.out.println("今日日期:" + localDate);		// Create
		LocalDate firstDay_2017 = LocalDate.of(2017, Month.JANUARY, 1);
		System.out.println("Specific Date=" + firstDay_2017);
		LocalDate hundredDay2017 = LocalDate.ofYearDay(2017, 200);
		System.out.println("200th day of 2017=" + hundredDay2017);		
                  // plus and minus operations
		System.out.println("昨天日期: " + localDate.minusDays(1));
		System.out.println("明天日期: " + localDate.plusDays(1));
		System.out.println("上月的今天:" + localDate.minusMonths(1));
		System.out.println("下个月的今天:" + localDate.plusMonths(1));		
                   // Temporal adjusters for adjusting the dates
		System.out.println("本月第1天的日期: " + localDate.with(TemporalAdjusters.firstDayOfMonth()));
		System.out.println("本月最后1天的日期: " + localDate.with(TemporalAdjusters.lastDayOfMonth()));
		System.out.println("本年最后1天的日期: " + localDate.with(TemporalAdjusters.lastDayOfYear()));		// TemporalFieldfor adjusting the dates
		System.out.println("今天是:" + localDate.getYear() + "第" + localDate.get(ChronoField.ALIGNED_WEEK_OF_YEAR) + "周");


		System.out.println("今天是周: " + localDate.getDayOfWeek());
		System.out.println("今天是本周的第:" + localDate.getDayOfWeek().getValue() + "天");		        // before
		System.out.println("今天在20171001日之前:" + localDate.isBefore(LocalDate.of(2017, 10, 1)));		        // 格式化
		System.out.println("格式化:" + localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));		// Instant 时间戳转换
		System.out.println("当前时间:" + Instant.now().atZone(ZoneId.systemDefault()));
		System.out.println("当前的时间戳:" + Instant.now().toEpochMilli());
		System.out.println("时间戳转为时间字符串:" + Instant.ofEpochMilli(Instant.now().toEpochMilli()).atZone(ZoneId.systemDefault()));	
	

                // Locale date time
		// Current Date
		LocalDateTime today = LocalDateTime.now();
		System.out.println("Current DateTime=" + today);		
                  // Current Date using LocalDate and LocalTime
		today = LocalDateTime.of(LocalDate.now(), LocalTime.now());
		System.out.println("Current DateTime=" + today);		
                  // Creating LocalDateTime by providing input arguments
		LocalDateTime specificDate = LocalDateTime.of(2014, Month.JANUARY, 1, 10, 10, 30);
		System.out.println("Specific Date=" + specificDate);		
                  // Current date in "Asia/Kolkata", you can get it from ZoneId javadoc
		LocalDateTime todayKolkata = LocalDateTime.now(ZoneId.of("Asia/Kolkata"));
		System.out.println("Current Date in IST=" + todayKolkata);		
                  // Getting date from the base date i.e 01/01/1970
		LocalDateTime dateFromBase = LocalDateTime.ofEpochSecond(10000, 0, ZoneOffset.UTC);
		System.out.println("10000th second time from 01/01/1970= " + dateFromBase);		         // Duration example
		Duration thirtyDay = Duration.ofDays(30);
		System.out.println("30天" + thirtyDay);		
                  // wait some time while something happens
		Instant second = Instant.now();		
                  // 计算两个时间,之间的长度 持续运行时间
		Duration duration = Duration.between(first, second);
		System.out.println("程序运行时间:" + duration);		
                  // 日期间隔计算
		Period period = localDate.until(localDate.with(TemporalAdjusters.lastDayOfYear()));
		System.out.println("Period Format= " + period);
		System.out.println("Months remaining in the year= " + period.getMonths());
	}

 

此文如未标注转载均为本站原创,自由转载请表明出处 宋子宪博客 » java 8 时间api 使用

发表评论

游客 表情
送你一朵小花花~

帅人已评:(0)