java - 使用java的Calendar.add(5,1) 多次重复日期的小时数出错!
问题描述
这是我的程序:
public class Test {
public static void main(String []args) {
Calendar a = Calendar.getInstance();
a.setTime(new Date(1949-1900,0,24,0,0,0));
Calendar b=Calendar.getInstance();
b.setTime(new Date(1951-1900,2,24,0,0,0));
System.out.println(a.getTime());
while(!a.equals(b)) {
a.add(Calendar.DAY_OF_YEAR, 1);
System.out.println(a.getTime());
}
System.out.println(a.getTime());
}
}
输出是
Fri Nov 23 01:00:00 CST 5285
Sat Nov 24 01:00:00 CST 5285
Sun Nov 25 01:00:00 CST 5285
Mon Nov 26 01:00:00 CST 5285
Tue Nov 27 01:00:00 CST 5285
为什么小时数为 1 而不是 0?当我更改日期时,它可能会变回 0。
解决方案
为什么您仍在使用过时的日期/时间 API?下面给出的示例不是您问题的答案,而是现代日期/时间 API 的示例。我建议您不要浪费时间尝试过时的 API 并开始使用现代日期/时间 API。
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
LocalDateTime a = LocalDateTime.now();
LocalDateTime b = LocalDateTime.now().plusHours(3);
while (a.getHour() != b.getHour()) {
System.out.println(a);
a = a.plusHours(1);
}
System.out.println(a);
}
}
输出:
2020-04-19T09:00:22.444642
2020-04-19T10:00:22.444642
2020-04-19T11:00:22.444642
2020-04-19T12:00:22.444642
推荐阅读
- eslint - 解析错误:无效的正则表达式:/\p{Lu}/:无效的转义(Unicode 通用类别属性)
- python - 在 python 中将 mp4 视频文件转换为灰度并获取 Source is empty 错误
- python - 如何在 Python 中为重复输入设置条件
- sampling - 例外:rstan 中不存在变量:创建采样器失败
- date - 弹性搜索索引映射自定义日期格式问题
- amazon-web-services - AWS Global Accelerator 静态 IP 不起作用
- flutter - 如何截断文本并使文本左侧显示在文本字段中
- flutter - 尝试更新 simple_animations 时出现 FadeAnimation 代码错误:使用 sa_v1_migration 迁移后的 ^2.2.1:^1.1.2
- javascript - 在 JavaScript 中输入返回 NaN
- regex - Spark Scala:类似 SQL 与自定义 UDF