Chr*_*pie 0 java timezone date date-format gmt
我有YYYYMMDD格式的日期字符串,我试图使用日期格式化程序解析成日期
public static DateFormat getDateFormat() {
  SimpleDateFormat result = new SimpleDateFormat("yyyyMMdd");                  
  result.setLenient(false);
  return result;
}
我在程序运行时设置了默认时区
public static void doTheDateZoneInit() {
    TimeZone tzone = TimeZone.getTimeZone("Europe/London");
    TimeZone.setDefault(tzone);
}
当我格式化日期并输出它而不在打印字符串中指定时区
Date myDate= getDateFormat().parse("20110331");
System.out.println("Date after it is formatted:" + myDate);
输出位于BST时区
Date after it is formatted:Thu Mar 31 01:00:00 BST 2011
如果我用不同的日期反复运行,我会得到不同的输出
似乎在2012年到2013年有一个范围,所有都计算到GMT.我不知道为什么会这样.
问题是,我在这些日期添加了结束时间...例如,我使用从String转换的日期调用以下方法并添加23:59:59:999以获取最新信息指定日期的时间.
public static Date addAlmostOneDay(Date startDate) {
    Calendar cal = new GregorianCalendar();
    cal.setTime(startDate);
    cal.add(Calendar.HOUR, 23);
    cal.add(Calendar.MINUTE, 59);
    cal.add(Calendar.SECOND, 59);
    cal.add(Calendar.MILLISECOND, 999);
    return cal.getTime();
}
但是如果我要添加23:59:59它转换为GMT的情况......它没有将日期设置为原始日期的结束但是考虑了BST和GMT之间的时间差异
有人可以说明为什么这似乎是hapening.使用YYYMMDD格式的不同输入运行相同的代码?
| 归档时间: | 
 | 
| 查看次数: | 1329 次 | 
| 最近记录: |