时间API的使用
几种时间API
- java.util.Date和java.util.Calendar:这两个类是Java早期的时间API,已经过时,不推荐使用。
- java.time包:Java 8引入了一个新的时间API,该API包括多个类,例如:
- LocalDate:表示日期,例如2021-10-01。
- LocalTime:表示时间,例如14:30:00。
- LocalDateTime:表示日期和时间,例如2021-10-01T14:30:00。
- ZonedDateTime:表示带时区的日期和时间。
- Period:表示日期之间的时间差。
- Duration:表示时间之间的时间差。
- 无解的
ChronoUnit
: 获取时间的天数、分钟、月份、 年份…..
java.sql.Date和java.sql.Time
:这两个类是Java中用于处理数据库时间的API,通常情况下不需要使用。
我们常用的就是time包下的时间API 以及 Util包下的
Java. time
LocalDate:表示日期例如2021-10-01。
对于LocalDate 这是实现类 ,我们可以进行很多操作, 一般我们可以和Period:表示日期之间的时间差 进行联动使用
它的三个参数分别代表 :年 、月、该月第几天
其中封装的Period.between(begin, end);
方法是我们最长用的 ,它可以帮我们得出两个时间段地天数差、 年份差、月份差….
1 | public static void main(String[] args) { |
如果想上面那样仅仅做简单地调用 , 那么他们比较地仅仅是相同单位下地,而不是所有的。换句话说就是要他比较月份 他就不会管是哪年 ,而是只比较两个月之间的差距
如果想要得出实实在在的两个时间时间的月份的大小
```java
//todo 比较两个时间段的月份差
int months = period.getYears() * 12 + period.getMonths();
// 获者直接使用 更加方便得出
long months = ChronoUnit.MONTHS.between(begin, end);
System.out.println(months);//得出的结果按照上面的begin 和 end 来算就是相差 246 个月
1
2
3
4
5
6
7
8
9
10
11
12
同样的,如果想实实在在的得出两个时间的天数
- ```java
LocalDate startDate = LocalDate.of(2021, 1, 1);
LocalDate endDate = LocalDate.of(2022, 1, 10);
//todo 得出两个时间的天数
long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
System.out.println("起始日期:" + startDate);
System.out.println("结束日期:" + endDate);
System.out.println("天数差:" + daysBetween);
LocalDateTime:表示时间-例如14:30:00
- 获取详细的时间分钟数
1 | //todo 获取两个时间段的分钟数 |
- 获取详细的时间秒
1 | //todo 获取两个时间段的秒数 |
- 获取两个时间段的周数
1 | //todo 获取两个时间段的周数 |
Utils
相关时间API
1 | public static void main(String[] args) throws ParseException { |
蓝桥真题
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。
小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?
1 | /*获取两个时间点之间的周数*/ |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Rayce. Blogs!
评论