(二)日期类
LocalDate:年月日
package demo0728;
import java.time.DayOfWeek;
import java.time.LocalDate;
public class Date {
public static void main(String[] args) {
//获取本地日期对象
LocalDate ld=LocalDate.now();
//获取日期对象中的信息
int year=ld.getYear();//2023
int month=ld.getMonthValue();//7
int day=ld.getDayOfMonth();//28
int dayOfYear=ld.getDayOfYear();//209
DayOfWeek dayOfWeek=ld.getDayOfWeek();//FRIDAY
int dayOfWeek2=ld.getDayOfWeek().getValue();//5
System.out.println(year);
System.out.println(month);
System.out.println(day);
System.out.println(dayOfYear);
System.out.println(dayOfWeek);
System.out.println(dayOfWeek2);
System.out.println(ld);//2023-07-28
//直接修改某个信息:withYear、withMonth、withDayOfMonth、withDayOfYear
LocalDate ld2=ld.withYear(2099);
System.out.println(ld2);//2099-07-28
//把某个信息加多少:plusYears、plusMonths、plusDays、plusWeeks
LocalDate ld3=ld.plusYears(2);
System.out.println(ld3);//2025-07-28
LocalDate ld4=ld.plusWeeks(2);
System.out.println(ld4);//2023-08-11
//把某个信息减多少:minusYears、minusMonths、minusDays、minusWeeks
//获取指定日期的LocalDate对象:
LocalDate ld5=LocalDate.of(2099,12,12);
LocalDate ld6=LocalDate.of(2099,12,12);
System.out.println(ld5);
//判断2个日期是否相等,在前还是在后
System.out.println(ld5.equals(ld6));//true
System.out.println(ld5.isAfter(ld4));//true
System.out.println(ld4.isBefore(ld5));//true
}
}
LocalTime:时分秒
package demo0728;
import java.time.LocalTime;
public class DateTime {
public static void main(String[] args) {
//获取时分秒纳秒,不可变
LocalTime lt=LocalTime.now();
//获取时间中的信息
int hour=lt.getHour();//时
int minute=lt.getMinute();//分
int second=lt.getSecond();//秒
int nano=lt.getNano();//纳秒
//修改时间:withHour、withMinute、withSecond、withNano
LocalTime lt2=lt.withHour(10);
//..........
//加多少:plusHour、plusMinutes、plusSeconds、plusNano
LocalTime lt3=lt.plusHours(10);
//..........
//减多少:minusHour、minusMinutes、minusSeconds、minusNanos
//获取指定时间的LocalTime对象
LocalTime lt4=LocalTime.of(12,12,12);
//比较
System.out.println(lt4.equals(lt3));
System.out.println(lt.isAfter(lt2));
System.out.println(lt.isBefore(lt2));
}
}
LocalDateTime:年月日时分秒
package demo0728;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
public class DateTime {
public static void main(String[] args) {
//获取本地日期和时间对象,年月日时分秒纳秒,前两个类有的方法它都有
LocalDateTime localDateTime=LocalDateTime.now();
System.out.println(localDateTime);//2023-07-28T11:37:55.874247600
//转成LocalDate对象
LocalDate ld=localDateTime.toLocalDate();
System.out.println(ld);//2023-07-28
//转成LocalTime对象
LocalTime lt=localDateTime.toLocalTime();
System.out.println(lt);//11:37:55.874247600
//合
LocalDateTime localDateTime1=LocalDateTime.of(ld,lt);
System.out.println(localDateTime1);//2023-07-28T11:39:28.435989300
}
}
ZoneId:时区
ZonedDataTime:带时区的时间
Instant:时间戳/时间线
//代码的性能分析,记录用户操作的时间点
//创建Instant的对象,获取此刻时间
//从1970-01-01 00:00:00开始到此刻的总秒数+不够一秒的纳秒数
Instant instant1=Instant.now();
//代码执行。。。。
Instant instant2=Instant.now();
DateTimeFormatter:用于时间的格式化和解析(线程安全)
package demo0728;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DataTimeFormatter {
public static void main(String[] args) {
//创建一个日期时间格式化器对象
DateTimeFormatter formatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter formatter2=DateTimeFormatter.ofPattern("yyyy-MM-dd");
//对时间进行格式化
LocalDateTime localDateTime=LocalDateTime.now();
System.out.println(localDateTime);//2023-07-28T15:59:45.918573600
LocalDate localDate=LocalDate.now();
System.out.println(localDate);
String rs=formatter.format(localDateTime);//正向格式化
System.out.println(rs);//2023-07-28 15:59:45
String rs1=formatter2.format(localDate);
System.out.println(rs1);//2023-07-28
//另一种方式
String rs2=localDateTime.format(formatter);//反向格式化
System.out.println(rs2);//2023-07-28 15:59:45
//解析时间,解析时间一般使用LocalDateTime提供的解析方法来解析
String dateStr="2029-12-12 12:12:12";
LocalDateTime ldt=LocalDateTime.parse(dateStr,formatter);
System.out.println(ldt);//2029-12-12T12:12:12
}
}
Period:时间间隔(年月日)
Duration:时间间隔(时分秒纳秒)