2011-07-18 175 views
5

我对Java很新,我有点坚持使用SimpleDateFormatCalendar。我有一个日期对象,并且想要提取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。在其他设备上,偏移量计算不正确,我从输入日期对象中收到日期和时间。你能给我一些提示或建议吗?我想我得到默认时区的方式不起作用?

回答

5
private String toGmtString(Date date){ 
    SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    sd.setTimeZone(TimeZone.getTimeZone("GMT")); 
    return sd.format(date); 
} 

你并不需要创建一个新的SimpleTimeZone,因为你不是发明一种新的时区 - 有一些开始发挥作用,在你的程序中,格林尼治标准时间2个时区的现有和默认的一个。

您也不需要修改您的现有日期对象,因为您不想表示不同的时间点 - 您只需要一种不同的方式来显示相同​​的时间点。

您需要做的就是告诉SimpleDateFormat要格式化哪个时区。

+0

我不敢相信这很容易,但我当然也会尝试。请给我几分钟的时间... – Marco

+0

好的..测试..我用了一个代表'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

+0

+1 <!--------------> –

2
private String toGmtString(Date date){ 
    //date formatter 
    SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    //getting default timeZone 
    TimeZone timeZone = TimeZone.getDefault(); 
    //getting current time 
    Calendar cal = Calendar.getInstance() 
    cal.setTime(date) ; 
    //adding/substracting curren't timezone's offset 
    cal.add(Calendar.MILLISECOND, -1 * timeZone.getRawOffset());  
    //formatting and returning string of date 
    return sd.format(cal.getTime()); 
} 
+0

好吧,这看起来不错。我会在几分钟内尝试一下。一个问题。你在哪里以及如何使用函数调用的日期参数?!我应该在获取实例后使用'cal.setTime(date);' – Marco

+0

是的。更新它。 –

+0

不错!作品!非常感谢你! – Marco

相关问题