java - 日历随日期递增

标签 java date time calendar

当我增加日历中的天数时,我遇到了一个奇怪的问题。我想循环过一年中的每一天。这是我的代码

Date d = null;
SimpleDateFormat textFormat = new SimpleDateFormat("dd-MM-yyyy");
String paramDateAsString = "10-1-2012";
d = textFormat.parse(paramDateAsString);
Calendar cal = Calendar.getInstance(); 
cal.setTime(d);

for(int i = 0; i < 365; i++) {
   cal.add(Calendar.DAY_OF_YEAR, 1);
   System.out.println(cal.get(Calendar.YEAR)+"-"+cal.get(Calendar.MONTH)+1+"-         "+cal.get(Calendar.DAY_OF_MONTH)+" 00:00:00'");
}

我得到这个输出:

...
2012-01-29 00:00:00'
2012-01-30 00:00:00'
2012-01-31 00:00:00'
2012-11-1 00:00:00'
2012-11-2 00:00:00'
...

最佳答案

这就是问题:

"-"+cal.get(Calendar.MONTH)+1

这实际上是在执行字符串连接 - 它很有效

("-" + cal.get(Calendar.MONTH)) + 1

因此,当 cal.get(Calendar.MONTH) 返回 1 时,实际上是:

("-" + 1) + 1 // which is...
"-1" + 1 // which is...
"-11"

可以将添加括起来:

"-" + (cal.get(Calendar.MONTH) + 1)

...但最好使用 SimpleDateFormat 来执行格式化,而不是手动执行。

关于java - 日历随日期递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19924837/

相关文章:

java - 学习调试

java - 将 XML 转换为 Java 对象时获取不正确的值

java - 是否可以在不先安装 java 的情况下在机器上运行可执行 jar 文件?

ruby-on-rails - Time 和 DateTime 之间的 Rails 时区差异

java - 使用 Eclipse 测量下载速度

mysql - Pentaho DI - 表输入错误 "couldn' t 从结果集中获取行”

angular - 为什么 Angular 不遵守方法签名中明确要求的 Date 类型?

php - 正则表达式替换php中的日期格式

java - 将时间和日期转换为相对时间(CSV 处理)

c++函数将time_t格式化为std::string:缓冲区长度?