2

嗨,我想在不使用任何库的情况下遍历一个日期范围。我想从 2005 年 1 月 18 日开始(想将其格式化为 yyyy/M/d)并以天为间隔进行迭代,直到当前日期。我已经格式化了开始日期,但我不知道如何将它添加到日历对象并进行迭代。我想知道是否有人可以提供帮助。谢谢

String newstr = "2005/01/18";
SimpleDateFormat format1 = new SimpleDateFormat("yyyy/M/d");
4

3 回答 3

6
Date date = format1.parse(newstr);
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
while (someCondition(calendar)) {
    doSomethingWithTheCalendar(calendar);
    calendar.add(Calendar.DATE, 1);
}
于 2013-01-21T20:56:01.917 回答
1

用于SimpleDateFormat将字符串解析为Date对象或将对象格式化Date为字符串。

使用类Calendar进行日期算术。它有一种add方法来推进日历,例如用一天。

请参阅上述类的 API 文档。

或者,使用Joda Time库,它使这些事情变得更容易。(标准 Java API 中的DateCalendar类有许多设计问题,不如 Joda Time 强大)。

于 2013-01-21T20:57:07.917 回答
-2

Java,实际上是许多系统,将时间存储为自 1970 年 1 月 12:00 上午 12:00 UTC 以来的毫秒数。这个数字可以定义为long。

//to get the current date/time as a long use
long time = System.currentTimeMillis();

//then you can create a an instance of the date class from this time.
Date dateInstance = new Date(time);

//you can then use your date format object to format the date however you want.
System.out.println(format1.format(dateInstance));

//to increase by a day, notice 1000 ms = 1 second, 60 seconds = 1 minute,
//60 minutes = 1 hour 24 hours = 1 day so add 1000*60*60*24 
//to the long value representing time.
time += 1000*60*60*24;

//now create a new Date instance for this new time value
Date futureDateInstance = new Date(time);

//and print out the newly incremented day
System.out.println(format1.format(futureDateInstance));
于 2013-01-21T21:12:04.647 回答