Java8 時間API

Posted 尘世间迷茫的小书童

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java8 時間API相关的知识,希望对你有一定的参考价值。

java.time 包是在JDK8新引入的,提供了用于日期、时间、实例和周期的主要API。

所有类都是不可变的、线程安全的。

import java.time.*;
import java.time.format.DateTimeFormatter;

public class DateTest {
	
	public static void main(String[] args) {
		
		LocalDate localDate = LocalDate.now();
		System.out.println("当前日期: " + localDate);
		
		//获取年、月、日
		System.out.println("年份: " + localDate.getYear());
		System.out.println("月份: " + localDate.getMonthValue());
		System.out.println("日期: " + localDate.getDayOfMonth());
		System.out.println(localDate.getYear() + "年第" + localDate.getDayOfYear() + "年");
		System.out.println("星期: " + localDate.getDayOfWeek());
		
		System.out.println("判斷當前年份是否是閏年:" + localDate.isLeapYear());
		
		//創建時間對象
		LocalDate lastTime = localDate.of(2008, 8, 8);
		System.out.println(lastTime);
		
		//LocalDate 轉 String
		DateTimeFormatter rule = DateTimeFormatter.ofPattern("yyyy-MM-dd");
		String timeStr = lastTime.format(rule);
		System.out.println(timeStr);
		
		//String 轉 LocalDate
		LocalDate lastTime1 = localDate.parse(timeStr);
		System.out.println(lastTime1);
		
		LocalDateTime now = LocalDateTime.now();
		System.out.println(now.getYear() + "年" 
						+ now.getMonthValue() + "月" 
						+ now.getDayOfMonth() + "日  時間:"
						+ now.getHour() +  ":"    //時
						+ now.getMinute() + ":"    //分
						+ now.getSecond() + ":"    //秒
						+ now.getNano());          //毫秒
		
		//增加年份 返回新的對象
		LocalDateTime nextYear = now.plusYears(1);
		System.out.println(nextYear);
		
		//增加月份 返回新的對象
		LocalDateTime nextMonth = nextYear.plusMonths(1);
		System.out.println(nextMonth);
		
		//增加天數 返回新的對象	
		LocalDateTime nextDay = nextMonth.plusDays(2);
		System.out.println(nextDay);
		
		//增加小時數 返回新的對象
		LocalDateTime nextHours = nextDay.plusHours(2);
		System.out.println(nextHours);
		
		//nextHours.plusMinutes(minutes)
		//nextHours.plusSeconds(seconds)
		//nextHours.plusNanos(nanos)
		//不一一演示
		
		//減去年份
		LocalDateTime preYear = nextHours.minusYears(1);
		System.out.println(preYear);
		
		//減去月份
		LocalDateTime preMonth = preYear.minusMonths(1);
		System.out.println(preMonth);
		
		//減去日期
		LocalDateTime preDay = preMonth.minusDays(2);
		System.out.println(preDay);
		
		//設置時間
		//設置年份
		LocalDateTime setYear = preDay.withYear(1997);
		System.out.println(setYear);
		
		//設置月份
		LocalDateTime setMonth = setYear.withMonth(5);
		System.out.println(setMonth);
		
		LocalDateTime dateTime = LocalDateTime.parse("2010-01-01T19:24:01.078");
		System.out.println("String 轉 LocalDateTime: " + dateTime);
		
		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
		System.out.println("LocalDateTime 轉 String: " + dateTime.format(formatter));
		
		//java.time.Duration 計算時間
		LocalDateTime start = LocalDateTime.of(1997, 7, 3, 1, 1);
		LocalDateTime end = LocalDateTime.of(2020, 1, 1, 1, 1);
		
		Duration result = Duration.between(start, end);
		System.out.println("距離天數: " + result.toDays()); //沒有距離年數的方法
		System.out.println("距離小時數: " + result.toHours());
		System.out.println("距離分鐘數: " + result.toMinutes());
		System.out.println("距離秒數: " + result.toMillis());  //秒
	}

}

  

以上是关于Java8 時間API的主要内容,如果未能解决你的问题,请参考以下文章

從JDK時間API演進,看時間處理

從JDK時間API演進,看時間處理

Java 8 新特性总结

《Java8实战》读书笔记11:Java8中新的日期时间API

《Java8实战》读书笔记11:Java8中新的日期时间API

Java8 流式 API(`java.util.stream`)