java Calender/formatter provides wrong date
不知怎么的,我被报告了一个问题,下面的代码提供了未来的日期。
使用的时区是GMT+01:00。NumberOfDays是非负整数。
此代码的目的是减少从当前日期开始的天数。
1 2 3 4 5 6 | SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yy",Locale.ENGLISH); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_MONTH, -numberOfDays); Date date = calendar.getTime(); String dateStr= formatter.format(date); System.out.println("Date :"+dateStr); |
我不能在我的机器上复制这个。
区域设置是否影响时区?
我试图关联到为什么新的simpledateformat对象包含年份错误的日历?以及时区、日历和simpledateformat的奇怪问题,但都是徒劳的。
请帮助我理解并纠正这个问题。
好吧,有两种可能性我能想到:
- 客户端计算机上的系统日期不正确,因此日历将以将来的日期开始
- 如果
numberOfDays 为负数,它显然会将日期推向未来。
就我个人而言,我会完全避免使用日期/日历,并将Joda Time作为更好的日期和时间API,但这对我上面给出的任何一个想法都没有帮助…