Jdk 1.8新特性的一些积累
程序员文章站
2022-06-04 23:01:46
...
Jdk 1.8新特性的一些积累
1 时间类
jdk1.8 提供了一系列关于处理日期、时间的工具类来替换以前的Date()、SimpleDateFormat()。原因有一下几点:
- Date类的toString格式很不友好
- Date类的许多方法都已过时
- SimpleDateFormat类不是线程安全的,在多线程访问时,需要在外部加锁保证安全
下面给出新版时间日期LocalDateTime、LocalDate、DateTimeFormatter的用法
// 时间转换格式
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 获取当天日期
LocalDate todayDate = LocalDate.now();
// 获取当天零点
LocalDateTime todayStart = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
String format = dateTimeFormatter.format(todayStart);
// 获取当前时间
LocalDateTime now = LocalDateTime.now();
String nowStr = dateTimeFormatter.format(now);
// 获取指定日期
LocalDateTime goalDate = LocalDateTime.parse("2020-01-29 00:00:00", dateTimeFormatter);
// 计算两个日期之间相隔 天、小时、分钟、秒
Duration duration = Duration.between(todayStart, goalDate);
long days = duration.toDays();
// 计算两个日期之间相隔 年、月
Period period = Period.between(todayStart.toLocalDate(), goalDate.toLocalDate());
int years = period.getYears();
// 获取时间的毫秒数
long l = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
// 日期加一天、一个星期、一个月、一年
LocalDate newDate = todayDate.plusDays(2);
// 加一个小时、一分钟、一秒钟
LocalDateTime newTime = todayStart.plusHours(2).plusMinutes(30);
上一篇: Java 利用信号量机制解决线程死锁问题
下一篇: HTML5 tab切换页面功能实现