jdk8中日期和时间api的使用
jdk8之前的日期和时间api非常难用,在jdk8中对其进行了很大的优化,并且此次优化将在今后一段时间内不再变更,所以相当重要。
之前的相关类主要有Date,Calender,SimpleDateFormat
在jdk8中提供了新的类LocalDateTime,Instant,DateTimeFormatter,我们可以使用新的类来替换原有的类实现同样的功能。
package com.atguigu.date;
import org.junit.Test;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAccessor;
public class JDK8DateTimeTest {
/**
* LocalDate LocalTime LocalDateTime 的使用
*/
@Test
public void test1() {
// 当前时间
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDate);
System.out.println(localTime);
System.out.println(localDateTime);
// 创建指定年月日时分秒的时间
LocalDateTime localDateTime1 = LocalDateTime.of(2020, 11, 27, 8, 55);
System.out.println(localDateTime1);
// getXxx() 获取相关的属性
/*System.out.println(localDateTime.getDayOfMonth());
System.out.println(localDateTime.getDayOfWeek());
System.out.println(localDateTime.getMonth());
System.out.println(localDateTime.getMonthValue());*/
// withXxx() 可理解为 设置相关的属性
// 体现不可变性 通过设置返回一个新的时间,原来的时间不变
LocalDateTime localDateTime2 = localDateTime.withDayOfMonth(20);
System.out.println(localDateTime);
System.out.println(localDateTime2);
LocalDateTime localDateTime3 = localDateTime.withHour(4);
System.out.println(localDateTime3);
// 加减
// 不可变性
LocalDateTime localDateTime4 = localDateTime.plusHours(8);
System.out.println(localDateTime4);
System.out.println(localDate);
LocalDateTime localDateTime5 = localDateTime.minusMonths(4);
System.out.println(localDateTime5);
System.out.println(localDateTime);
}
/**
* Instant的使用
* 瞬时
*/
@Test
public void test2() {
// 实例化
Instant instant = Instant.now();
System.out.println(instant); // 本初子午线所对应的时间
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime);
// 获取离1970.1.1的毫秒数
long milli = instant.toEpochMilli();
System.out.println(milli);
// 通过离1970.1.1的毫秒数来实例化
Instant instant1 = Instant.ofEpochMilli(1606441584674L);
System.out.println(instant1);
}
/**
* DateTimeFormatter的使用:格式化、解析 日期时间
* 格式化:把日期转化为日期格式的字符串
* 解析:格式化的逆过程,把日期格式的字符串转化为日期
*/
@Test
public void test3() {
// 实例化
//1 标注格式的formatter
//2 本地格式的formatter
//3 自定义格式的formatter
// 主要用第三种 自定义格式
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
// 格式化
String str = dateTimeFormatter.format(LocalDateTime.now());
System.out.println(str);//2020-11-27 10:22:26
// 解析
TemporalAccessor parse = dateTimeFormatter.parse("2020-11-27 10:21:26");
System.out.println(parse);
}
}
如有不当,欢迎指正

浙公网安备 33010602011771号