日历不返回GMT

时间:2011-10-25 09:29:27

标签: android calendar gmt

我正在尝试将日历对象设置为GMT,但getTime()始终以GMT + 1(我当前时间)返回时间。我试过了:

Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("skeniver"));

他们显然都回归GMT,因为

cal.getTimeZone().getDisplayName()

返回“GMT + 00:00”;但

cal.getTime().toString();

始终以GMT + 1显示时间。

有谁知道为什么会这样?

3 个答案:

答案 0 :(得分:1)

您需要调整夏令时。我不确定这是否会有所帮助,但是我用它来调整当前世界各地正在使用的应用中的任何时区为UTC的代码。我使用Date代替Calendar,但它有效......

Date dateTimeNow = new Date();
TimeZone tz = TimeZone.getDefault();
int currentOffsetFromUTC = tz.getRawOffset() + (tz.inDaylightTime(dateTimeNow) ? tz.getDSTSavings() : 0);
Date dateTimeNowUTC = new Date(dateTimeNow.getTime() - currentOffsetFromUTC);

答案 1 :(得分:0)

如果你想在字符串中,那么更喜欢这个

的DateFormat或SimpleDateFormat

这是示例

SimpleDateFormat sdf = new SimpleDateFormat(); // here you can also define your format of date for e.g. "dd/MM/yyyy z"

sdf.setTimeZone("GMT");

Calendar cal = Calendar.getInstance();
System.out.println(sdf.format(cal.getTime()));

答案 2 :(得分:0)

Calendar.getTime()会返回Date个对象。在Java中,Date只是从UNIX时代开始的长时间戳的持有者。

要以与默认值不同的Date显示TimeZone,您可以使用SimpleDateFormat