LocalDate、 LocalTime、LocalDateTime类的实例是不可变的对象,分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。
注: ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示法
这些新增的日期时间API都在 java.time包下
例如:LocalDateTime ldt =LocalDateTime.now();
例如:LocalDateTime of =LocalDateTime.of(2018, 12, 30, 20, 20, 20);
ldt.getYear();获取年
ldt.getMinute();获取分钟
ldt.getHour();获取小时
getDayOfMonth 获得月份天数(1-31)
getDayOfYear 获得年份天数(1-366)
getDayOfWeek 获得星期几(返回一个 DayOfWeek枚举值)
getMonth 获得月份, 返回一个Month 枚举值
getMonthValue 获得月份(1-12)
getYear 获得年份
例如: boolean after =ldt.isAfter(LocalDateTime.of(2024, 1, 1, 2, 3));
例如:LocalDateTime parse = LocalDateTime.parse("2007-12-03T10:15:30");
按照我们指定的格式去解析:
//按照我们指定的格式去解析
注意细节:如果用LocalDateTime 想按照我们的自定义的格式去解析,注意
日期字符串的年月日时分秒要写全,不然就报错
LocalDateTime ldt4 = LocalDateTime.now();
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime.parse("2018-01-21 20:30:36", formatter2);
System.out.println(zonedDateTime);
long epochSecond = ins.getEpochSecond();//获取从1970-01-01 00:00:00到当前时间的秒值
//getNano()方法是把获取到的当前时间的秒数 换算成纳秒 比如当前时间是2018-01-01 14:00:20:30
//那就把30秒换算成纳秒 int nano = ins.getNano();
-------------------------------------------------------------------------------
Duration类中静态方法between()
Instant start = Instant.now();
for(int i=0;i<1000L;i++){
System.out.println("循环内容");
}
Instant end = Instant.now();
Duration between = Durati’on.between(start,end);
Period类 中的静态方法between()
例如:
LocalDate now = LocalDate.now();
System.out.println(now);
1 //使用TemporalAdjusters自带的常量来设置日期
LocalDate with = now.with(TemporalAdjusters.lastDayOfYear());
System.out.println(with);
2 //采用TemporalAdjusters中的next方法来指定日期
LocalDate date = now.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
System.out.println(date);
3 //采用自定义的方式来指定日期比如指定下个工作日
LocalDateTime ldt = LocalDateTime.now();
LocalDateTime workDay = ldt.with(new TemporalAdjuster() {
@Override
public Temporal adjustInto(Temporal temporal) {
//向下转型
LocalDateTime ld =(LocalDateTime) temporal;
//获取这周的星期几
DayOfWeek dayOfWeek =ld.getDayOfWeek();
if (dayOfWeek.equals(DayOfWeek.FRIDAY)){
return ld.plusDays(3);//如果这天是星期五,那下个工做日就加3天
} else if(dayOfWeek.equals(DayOfWeek.SATURDAY)) {
return ld.plusDays(2);//如果这天是星期六,那下个工做日就加2天
} else {
//其他就加一天
return ld.plusDays(1);
}
}
});
System.out.println(workDay);
DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDateTime now = LocalDateTime.now();
String format1 = dateFormat.format(now);
System.out.println(format1);
----------------------------------------------------------------------------------------------------------------------------------------------------------
例如:Set
//创建日期对象 LocalDateTime now = LocalDateTime.now(); //获取不同国家的日期时间根据各个地区的时区ID名创建对象 ZoneId timeID = ZoneId.of("Asia/Shanghai"); //根据时区ID获取带有时区的日期时间对象 ZonedDateTime time = now.atZone(timeID); System.out.println(time); //方式2 通过时区ID 获取日期对象 LocalDateTime now2 = LocalDateTime.now(ZoneId.of("Asia/Shanghai")); System.out.println(now2);