目录
获取时间
获取人读的时间及时间运算:
(具体使用的方法在代码里)
public class TestLocalDataTime {
public static void main(String[] args) {
// 获取当前日期时间
LocalDateTime idt = LocalDateTime.now();
System.out.println(idt);
// 获取指定日期时间
LocalDateTime idt1 = LocalDateTime.of(2021,3,21,05,20,21);
System.out.println(idt1);
// 日期运算
// 加年
LocalDateTime idt2 =idt1.plusYears(1);
System.out.println(idt2);
// 减月
LocalDateTime idt3 = idt1.minusMonths(10);
System.out.println(idt3);
// 获取单独年月日
System.out.println(idt1.getYear());
System.out.println(idt1.getMonth());
System.out.println(idt.getDayOfWeek());
}
}
时间戳
获取计算机读的时间及运算
(带时区的时间)
具体使用在代码里体现
public class ShiJianChuo {
// Instant:时间戳:(以Unix元年:1970年1月1日00:00:00到某个时间的毫秒值)
public static void main(String[] args) {
Instant ins1 = Instant.now();//默认获取UTC时区,
System.out.println(ins1);
OffsetDateTime odt =ins1.atOffset(ZoneOffset.ofHours(8));//加8个时区
System.out.println(odt);
//时间戳
System.out.println(ins1.toEpochMilli());
System.out.println(ins1.getEpochSecond());
// 从元年时间加时间
Instant ins2 = Instant.ofEpochSecond(120);
System.out.println(ins2);
}
}
计算时间差
public class ShiJianJianGe {
public static void main(String[] args) {
// 计算ins1 和ins2 机器时间间隔
Instant ins1 = Instant.now();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Instant ins2 = Instant.now();
Duration dur = Duration.between(ins1,ins2);
// 获取毫秒间隔
System.out.println(dur.toMillis());
// 获取秒间隔
System.out.println(dur.getSeconds());
//获取人读时间间隔
LocalTime it1 = LocalTime.now();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
LocalTime it2 = LocalTime.now();
Duration dur1 = Duration.between(it1,it2);
System.out.println(dur1.toMillis());
//获取现在时间与自定义时间相差多少
LocalDate id1 =LocalDate.of(2021,3,21);
LocalDate id2 = LocalDate.now();
Period p = Period.between(id1,id2);
System.out.println(p);
// 获取现在时间与自定义时间相差多少年
System.out.println(p.getYears());
}
}
时间矫正(修改时间)
public class ShiJianJiaoZheng {
public static void main(String[] args) {
LocalDateTime ldt = LocalDateTime.now();
System.out.println(ldt);
// 修改月份
LocalDateTime ldt2 = ldt.withDayOfMonth(10);
System.out.println(ldt2);
//获取下周一
LocalDateTime ldt3 = ldt.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
System.out.println(ldt3);
// 自定义下一个工作日
LocalDateTime ldt5 = ldt.with((l)->{
LocalDateTime ldt4 = (LocalDateTime) l;
// 获取周几
DayOfWeek dow =ldt4.getDayOfWeek();
if(dow.equals(DayOfWeek.FRIDAY)){
return ldt4.plusDays(3);
}else if(dow.equals(DayOfWeek.SUNDAY)){
return ldt4.plusDays(2);
}else{
return ldt4.plusDays(1);
}
});
System.out.println(ldt5);
}
}
格式化日期、时间及自定义时间格式
DateTimeFormatter格式化日期/时间
public class GeShiHua {
public static void main(String[] args) {
// DateTimeFormatter格式化日期/时间
// 对日期格式化
DateTimeFormatter dtf = DateTimeFormatter.ISO_DATE;
LocalDateTime idt = LocalDateTime.now();
String str = idt.format(dtf);
System.out.println(str);
// 自定义格式
DateTimeFormatter dtf2 =DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
String str2 = dtf2.format(idt);
System.out.println(str2);
// 转换回来
LocalDateTime newDate = LocalDateTime.parse(str2,dtf2);
System.out.println(newDate);
// ZonedDate/ZonedTime/ZonedDateTime
//获取Europe/Nicosia时区的时间
LocalDateTime ldt = LocalDateTime.now(ZoneId.of("Europe/Nicosia"));
System.out.println(ldt);
// 获取时区
Set<String> set = ZoneId.getAvailableZoneIds();
set.forEach(System.out::println);
}
}