2010-09-01 24 views
1

我有一个基于当天显示信息的程序。一切都一直工作到今天。由于某种原因,当日历回滚一天以获得昨天的日期时,会直接进入八月三十日。它跳过8月31日。它会抓住今天的日子很好(第一节),但是当我追踪它时,它会在第三十一秒过去。任何人对我在做什么错误或更好的方式做的建议?这里是我的代码日历跳过8月31日滚动(Calendar.DATE,false)

Calendar date2; 
    date2 = Calendar.getInstance(); 
    mday1 = date2.get(Calendar.DATE); 
    date2.roll(Calendar.DATE, false); //rolls back the date by one day 
    mday2 = date2.get(Calendar.DATE); 

回答

3

它不会去上个月。它保持在同一个月(自己查看月份字段)。它只是改变了一个月的一天。您希望使用Calendar#add()而不是负值。

Calendar date2; 
date2 = Calendar.getInstance(); 
mday1 = date2.get(Calendar.DATE); 
date2.add(Calendar.DATE, -1); //rolls back the date by one day 
mday2 = date2.get(Calendar.DATE); 
+0

你是对的,你的解决方案修复它,我没有察觉月份没有改变,谢谢:) – John 2010-09-02 01:36:57

+0

不客气。 – BalusC 2010-09-02 01:37:35