JDK8:中新增时间对象是不可变的,如果增加或减少时间,是创建了一个新的时间。
Zoneld时区:
public class test {
public static void main(String [] arg) throws ParseException {
//获取所有时区名称
Set<String> z=ZoneId.getAvailableZoneIds();
System.out.println(z.size());
System.out.println(z);
//获取默认时区
ZoneId z1=ZoneId.systemDefault();
System.out.println(z1);
//获取指定时区
ZoneId z2=ZoneId.of("Asia/Aqtau");
System.out.println(z2);
}
}
Instant时间戳
public class test {
public static void main(String [] arg) throws ParseException {
//获取当前 Instant对象
Instant n1=Instant.now();
System.out.println(n1);
//根据(秒,毫秒,纳秒)获取当前时间对象
Instant n2=Instant.ofEpochMilli(10L);//毫秒
System.out.println(n2);
Instant n3=Instant.ofEpochSecond(2L);//秒
System.out.println(n3);
Instant n4=Instant.ofEpochSecond(2L, 1000000000L);//纳秒
System.out.println(n4);
//指定时区
ZonedDateTime time=Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
System.out.println(time);
//isXXX判断时间
Instant n5=Instant.ofEpochMilli(0L);
Instant n6=Instant.ofEpochMilli(1000L);
boolean result=n5.isBefore(n6);
System.out.println(result);
//减少时间
Instant n7=Instant.ofEpochSecond(8L);
Instant n8=n7.minusSeconds(1L);
System.out.println(n7);
System.out.println(n8);
}
}
ZoneDateTime:
DateTimeFormatter
public class test {
public static void main(String [] arg) throws ParseException {
//获取时间对象
ZonedDateTime time=Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
System.out.println(time);
//解析,指定格式
DateTimeFormatter d =DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EE a");
//格式化
String t=d.format(time);
System.out.println(t);
}
}
Calendar日历:
public class test {
public static void main(String [] arg) throws ParseException {
//获取当前时间对象
LocalDate l1=LocalDate.now();
System.out.println(l1);
//指定时间对象
LocalDate l2=LocalDate.of(2003, 10, 13);
System.out.println(l2);
//获取日历中的年月日:对象.get..
int year=l1.getYear();
System.out.println(year);
//修改时间
LocalDate l3=l1.withYear(2010);
System.out.println(l3);
//获取时分秒
LocalTime T=LocalTime.now();
System.out.println(T);
//获取年月日时分秒
LocalDateTime t1=LocalDateTime.now();
System.out.println(t1);
}
}
工具类:
Period.between(l1,l2):第二个参数减第一个参数。
period.getYears();//获取年
duration.toDays();//获取时间差
System.out.println(ChronoUnit.YEARS.between(birthday,today));//获取相差年