【发布时间】:2012-11-28 23:53:05
【问题描述】:
我想使用 TimeZone id 获取 GMT 等效值 示例:
太平洋/斐济 ==> 应该是 GMT+13,因为 DST 于 2012 年 10 月 21 日星期日开始。 但相反,我得到的是 GMT+12。
下面是我的代码:
public static void main(String[] args){
String m_utcDatePattern = "yyyy-MM-dd'T'HH:mm:ss.SSS";
String pnrCreation = "2012-12-10T01:14:22.000";
Calendar calendar = convertDateStringToCalendar(pnrCreation, m_utcDatePattern);
double offset = TimeZone.getTimeZone("Pacific/Fiji").getOffset(calendar.getTimeInMillis())/(60*60*1000.0);
System.out.println("GMT+" + (int) offset); //result is GMT+12, it should be GMT+13
}
//Date String to Calendar
public static Calendar convertDateStringToCalendar(String value, String fromPattern)
{
Calendar calendar;
if (value == null)
{
return null;
}
else
{
DateFormat dateFormat = new SimpleDateFormat(fromPattern);
Date date;
try
{
date = dateFormat.parse(value);
calendar = Calendar.getInstance();
calendar.setTime(date);
}
catch (ParseException e)
{
return null;
}
return calendar;
}
}
提前致谢! :-)
问候,
种族
【问题讨论】:
-
您在此处使用的默认时区是什么
calendar = Calendar.getInstance();? -
嗨彼得,问题出在我们服务器中的 TZ 数据中,它没有更新。现在的最新版本是“tzdata2012j”。
标签: java calendar timezone dst gmt