一、LocalDate、LocalTime、LocalDatetime
local家族各有各的用处,其中就属LocalDateTime既可以拿到时间也可以拿到日期
他们都有一个特点,就是要通过调用类中的静态方法来得到他们的对象,
而且一般都是通过调用XXX.now();来得到
import java.time.LocalDate;
import java.time.MonthDay;
public class LocalDateDemo {
public static void main(String[] args) {
LocalDate localDate = LocalDate.now();//它创建对象要用静态方法
System.out.println(localDate);
System.out.println(localDate.getMonth().getValue());//提取出月份
LocalDate birthday = LocalDate.of(2001,4,23);
MonthDay monthDay = MonthDay.from(localDate);//将月份和日期提取出来
MonthDay birthMonth = MonthDay.of(birthday.getMonth().getValue(),birthday.getDayOfMonth());//也可以这样
System.out.println("今天是你的生日吗?"+monthDay.equals(birthMonth));
}
}
二、instant
它是一个时间戳,默认输出的是标准时间
import java.time.Instant;
import java.time.ZoneId;
import java.util.Date;
public class InstantDemo {
public static void main(String[] args) {
Instant instant1 = Instant.now();
System.out.println(instant1);//默认打出标准时间的时间戳
//2022-04-23T12:34:55.334439300Z
//如果要调用系统默认的时区的话,用这个方法
System.out.println(instant1.atZone(ZoneId.systemDefault()));//因为它返回的是ZonedDateTime,可以直接用输出语句输出
//2022-04-23T20:39:00.407616400+08:00[Asia/Shanghai]
//instant对象可以和date对象进行互相转换
Date d1 = Date.from(instant1);
System.out.println(d1);
Instant instant2= d1.toInstant();
System.out.println(instant2);
}
}
三、DateTimeFormat
它是新增的时间日期格式化类,相比于原来的simpledateformat有一些好处。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class DateTimeFormatDemo {
//jdk8 中新增的日期格式化器
public static void main(String[] args) {
LocalDateTime dateTime1 = LocalDateTime.now();
System.out.println(dateTime1);
DateTimeFormatter f1 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss EEE a");//设置格式类型
String s2 = f1.format(dateTime1);//它返回的类型是String
System.out.println(s2);
System.out.println(f1.format(dateTime1));//日期格式化器特别灵活,可以自己调用format格式化时间对象
//也可以时间对象调用format来格式化它,都可以将时间对象格式化
System.out.println(dateTime1.format(f1));
//也可以用来解析字符串时间
DateTimeFormatter f2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
String st = "2009年01月08日 20:11:22";
LocalDateTime dateTime2 = LocalDateTime.parse(st,f2);
System.out.println(dateTime2);
//我发现用jdk8里面新增的日期格式化对象格式化字符串时间时,字符串的时间要严格与格式相同,MM月一定要两位数,同理dd日也是如此,要不然就会报错
//而SimpleDateFormat就不会,但是SimpleDateFormat要抛出异常
}
}
先写到这里吧~~~