我对Java很新,我有点坚持使用SimpleDateFormat
和Calendar
。我有一个日期对象,并且想要提取GMT日期字符串,如yyyy-MM-dd HH:mm:ss
。我住在德国,目前我们是格林威治标准时间+0200。我的日期 - 对象的时间是例如2011-07-18 13:00:00
。我现在需要的是2011-07-18 11:00:00
。我的时区的偏移量应该自动计算。转换GMT日期时间字符串
我想这样的事情,但我想有一个错误的地方:
private String toGmtString(Date date){
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
TimeZone timeZone = TimeZone.getDefault();
Calendar cal = Calendar.getInstance(new SimpleTimeZone(timeZone.getOffset(date.getTime()), "GMT"));
sd.setCalendar(cal);
return sd.format(date);
}
在某些设备上像我希望它返回datestring。在其他设备上,偏移量计算不正确,我从输入日期对象中收到日期和时间。你能给我一些提示或建议吗?我想我得到默认时区的方式不起作用?
我不敢相信这很容易,但我当然也会尝试。请给我几分钟的时间... – Marco
好的..测试..我用了一个代表'2011-07-18 13:34:27'的日期对象。使用默认的日期函数'.toGMTString()'我收到'18 Jul 2011 11:43:27 GMT'这是我需要的确切时间点。使用我自己的函数,我仍然收到'2011-07-18 13: 43:27'这是我的问题。使用Jigar Joshin的功能,我收到'2011-07-18 12:43:27',这是缺少1小时(欧洲夏令时)。使用Eli Acherkans功能,我收到了'2011-07-18 11:43:27',这正是我想要的(偏移包括欧洲夏令时)。 – Marco
+1 <!--------------> –