不知何故,我被报告了一个问题,以下代码提供了日期。
使用的时区是GMT + 01:00。 numberOfDays 是非负整数。
此代码的目的是减少从当前日期开始的天数。
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);
我无法在我的机器上重现这一点。
Locale是否会影响TimeZone?
我尝试与Why does a new SimpleDateFormat object contain calendar with the wrong year?和Strange problem with timezone, calendar and SimpleDateFormat相关联但是徒劳无功。
请帮助我理解并纠正这个问题。
答案 0 :(得分:2)
嗯,我可以想到两种可能性:
numberOfDays
为否定,则显然会将日期推迟到将来 Locale
与时区没有直接关系 - 它们是独立的,但很明显,具有法语区域设置的机器可能属于法国时区等。
就个人而言,我会完全避免使用日期/日历,并使用Joda Time作为很多更好的日期和时间API,但这对我上面给出的任何一个想法都无济于事。 ..