Jdk8新的时间API
Java 8 以一个新的开始为 Java 创建优秀的 API。新的日期时间API包含
>java.time -包含值对象的基础包
>java.time.chrono - 提供对不同的日历系统的访问
>java.time.format - 格式化和解析时间和日期
>java.time.temporal - 包括底层框架和扩展特性
>java.time.zone -包含时区支持的类
Calendar:日历类
1 实例化 由于Calendar是一个抽象类,所以我们需要创建其子类的实例。这里我们通过Calender的静态方法 getInsance()即可获取
2常用方法:get(int field) / set(int field,XX) / add(int field,xx) / getTime() / setTime();
>实例化:now() / of(xx,xx,xx)
>方法:get() / whitXxx() / plusXxx() / minusXxx() ...
Instant: 时间线上的一个瞬时点。 这可能被用来记录应用程序中的事件 时间戳。
实例化:now() / ofEpochMilli()
方法:toEpochMilli();
总代码:
package Test0713;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAccessor;
/**
* 可变性: 像日期和时间这样的类应该是不可变的。
* 偏移性: Date中的年份是从1900开始的,而月份都从开始。
* 格式化:格式只对Date有用,Calendar则不行。
*
*
* **对日期和时间的操作一直是Java程序员最痛苦的地方之一
*/
public class DateTimeTest2 {
public static void main(String[] args) {
//now():获取当前时间/日期
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDate);
System.out.println(localTime);
System.out.println(localDateTime);
//of():获取指定日期、时间对应的实例
LocalDate localDate1 = LocalDate.of(2021, 5, 23);
LocalDateTime localDateTime1 = LocalDateTime.of(2021, 12, 12, 12, 2);
System.out.println(localDate1);
System.out.println(localDateTime1);
//getXXX():
LocalDateTime localDateTime2 = LocalDateTime.now();
System.out.println(localDateTime2.getDayOfMonth());
//体现不可变性
System.out.println();
LocalDateTime localDateTime3 = localDateTime2.withDayOfMonth(15);
System.out.println(localDateTime2);//2023-07-19T22:40:51.556667600
System.out.println(localDateTime3);//2023-07-15T22:40:51.556667600
//
System.out.println();
LocalDateTime localDateTime4 = localDateTime2.plusDays(5);
System.out.println(localDateTime2);
System.out.println(localDateTime4);
//JDK8的API:Instant
System.out.println();
Instant instant = Instant.now();
System.out.println(instant);//2023-07-19T15:03:09.331471300Z
OffsetDateTime instant1 = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(instant1);
Instant instant2 = Instant.ofEpochMilli(24123123312L);//
System.out.println(instant2); //1970-10-07T04:52:03.312Z
long milliTime = instant.toEpochMilli(); //获取1970 到该时间的毫秒数
System.out.println(milliTime);
//JDK的API:DateTimematter
//自定义的格式。如:ofpattern("yyyy-MM-dd hh:mm:ss")
System.out.println();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//格式化:日期、时间--->字符串
LocalDateTime localDateTime5 = LocalDateTime.now();
String strDateTime = dateTimeFormatter.format(localDateTime5);
System.out.println(strDateTime);
//解析:字符串--->日期、时间
TemporalAccessor temporalAccessor = dateTimeFormatter.parse("2023-07-19 23:21:33");
LocalDateTime localDateTime6 = LocalDateTime.from(temporalAccessor);
System.out.println(localDateTime6);
System.out.println(temporalAccessor);
}
}