Java8日期用法
在Java8中已经推出了新的日期API,Java.time包下提供了用于日期,时间,实例和周期的主要API
获取今天日期
复制代码
1
2
3
4//LocalDate存储了日期,例如:2022-8-9,不包含时间 LocalDate now = LocalDate.now(); System.out.println(now);
设置日期
复制代码
1
2
3
4
5//of是一个静态方法,接收年、月、日三个int参数,返回LocalDate对象。!!!月份不是从0开始的 LocalDate date = LocalDate.of(2022,1,9); System.out.println(date);
日期判断
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24//判断两个日期是否相等 LocalDate date = LocalDate.of(2022,1,10); LocalDate today = LocalDate.now(); if(date.equals(today)) { System.out.println("日期相等"); } else { System.out.println("日期不相等"); } //当前日期是否早于,晚于另外的日期 LocalDate today = LocalDate.now(); LocalDate date = LocalDate.of(2022,1,9); if(today.isAfter(date)) { System.out.println("今天已经晚了"); } else { System.out.println("今天还早"); } if(today.isBefore(date)) { System.out.println("今天在前面"); } else { System.out.println("今天在后面"); }
匹配周期性的日期
复制代码
1
2
3
4
5
6
7
8
9
10//每年、每月、每周都会有一个特定的日期,比如每个月的账单日、每年的生日等日期,这时就不能把年、月等放入日期比较。可以使用 DayOfWeek、MonthDay、YearMonth 类处理这类日期。 LocalDate date = LocalDate.of(2022,1,9); MonthDay monthDay = MonthDay.of(date.getMonth(), date.getDayOfMonth()); MonthDay today = MonthDay.from(LocalDate.now()); if(today.equals(monthDay)) { System.out.println("今天已经到特定的日期了"); } else { System.out.println("今天还没有到特定的日期"); }
一周、月、年前、后的日期
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21//ChronoUnit 是用来表示时间的单位,比如:ChronoUnit.YEARS 年,ChronoUnit.WEEKS 周。minus()、plus() 方法用来减去、加上一个时间周期。 LocalDate today = LocalDate.now(); LocalDate preWeek = today.minus(1, ChronoUnit.WEEKS); System.out.println(preWeek); LocalDate afterWeek = today.plus(1, ChronoUnit.WEEKS); System.out.println(afterWeek); LocalDate preMon = today.minus(1, ChronoUnit.MONTHS); System.out.println(preMon); LocalDate afterMon = today.plus(1, ChronoUnit.MONTHS); System.out.println(afterMon); LocalDate preYear = today.minus(1, ChronoUnit.YEARS); System.out.println(preYear); LocalDate afterYear = today.plus(1, ChronoUnit.YEARS); System.out.println(afterYear);
时间间隔
复制代码
1
2
3
4
5
6
7//计算两个日期之间隔了多少天、月是很常规的业务操作。月是用 Period 类计算,天使用 LocalDate 的 toEpochDay() 方法计算。 LocalDate today = LocalDate.now(); LocalDate date = LocalDate.of(2022,4,10); Period period = Period.between( date,today); System.out.println("间隔了" + period.getMonths() + "月"); System.out.println("间隔了" + (today.toEpochDay() - date.toEpochDay()) + "天");
时间戳
复制代码
1
2
3
4
5//Instant 类有一个静态工厂方法now()会返回当前的时间戳。 Instant instant = Instant.now(); System.out.println(instant); System.out.println(instant.toEpochMilli());
格式化日期
复制代码
1
2
3
4
5
6
7
8
9
10
11//DateTimeFormatter 是一个线程安全的日期和时间格式化器,下面是用 DateTimeFormatter.BASIC_ISO_DATE 将 20220809 格式化成了 2022-08-09。 String str = "20220809"; LocalDate formatted = LocalDate.parse(str, DateTimeFormatter.BASIC_ISO_DATE); System.out.println("格式化后的日期为: "+ formatted); //DateTimeFormatter 也可以自定义格式化字符串 String str = "09012021"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMddyyyy"); LocalDate date = LocalDate.parse(str, formatter); System.out.print(date);
是否为闰年
复制代码
1
2
3
4
5
6
7
8//在学程序之初被闰年折磨的死去活来,给个年份计算是不是闰年。java 8 的 isLeapYear() 就很好的解决了这个问题。 LocalDate today = LocalDate.now(); if(today.isLeapYear()){ System.out.println("闰年"); }else { System.out.println("不是闰年"); }
日期字符串转化
复制代码
1
2
3
4
5
6//上面格式化的例子是将字符串转为日期,下面是将日期转为字符串。 LocalDate now = LocalDate.now(); DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String str = now.format(format); System.out.print(str);
最后
以上就是仁爱心锁最近收集整理的关于Java8日期用法的全部内容,更多相关Java8日期用法内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复