您好我想在不使用任何库的情况下迭代日期范围。我想从2005年1月18日开始(想要将其格式化为yyyy / M / d)并按日间隔迭代直到当前日期。我已经格式化了开始日期,但我不知道如何将其添加到日历对象并进行迭代。我想知道是否有人可以提供帮助。感谢
String newstr = "2005/01/18";
SimpleDateFormat format1 = new SimpleDateFormat("yyyy/M/d");
答案 0 :(得分:6)
Date date = format1.parse(newstr);
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
while (someCondition(calendar)) {
doSomethingWithTheCalendar(calendar);
calendar.add(Calendar.DATE, 1);
}
答案 1 :(得分:1)
使用SimpleDateFormat
将字符串解析为Date
对象或将Date
对象格式化为字符串。
使用类Calendar
进行日期算术运算。它有一个add
方法来推进日历,例如一天。
请参阅上述类的API文档。
或者,使用Joda Time库,这使这些更容易。 (标准Java API中的Date
和Calendar
类有许多设计问题,并没有Joda Time那么强大。
答案 2 :(得分:-2)
Java,实际上是许多系统,将时间存储为UTC时间1970年1月1日凌晨12:00以来的毫秒数。这个数字可以定义为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));