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()); //秒
}
}