如何在安卓系统中查找GMT偏移值

3

如何查找用户的GMT值,例如印度的GMT值为+05:30。

在Android中如何计算这个+05:30的值?

我需要这个值是因为我在我的应用程序中使用了一个Java库,该库具有带有此+05:30字段的函数,并且我希望通过计算生成此字段,以便不必为每个国家填写单独的值。


使用calendar.getTimeInMillis();返回UTC时间,并使用Epoch比较它与GMT http://www.xav.com/time.cgi - Moonhead
我正在寻找一种离线解决方案,如果可能的话。 - user3671032
据我所知,在时区偏移量中没有+5.5。偏移量为小时 + 冒号 + 分钟,使用双位数字,如果需要则使用填充零。印度时间相对于UTC是+05:30。忽略填充零将破坏各种日期时间库和互操作性。 - Basil Bourque
可能是java joda-time get date time等问题的重复。搜索"Asia/Kolkata"或"joda DateTimeZone"。 - Basil Bourque
5个回答

8

这是超棒的工作方式

   public double getOffset(){
        TimeZone timezone = TimeZone.getDefault();
        int seconds = timezone.getOffset(Calendar.ZONE_OFFSET)/1000;
        double minutes = seconds/60;
        double hours = minutes/60;
        return hours;
  }

以上方法返回一个偏移量值,并适用于所有GMT。 - user3671032
如何确定偏移量是正数还是负数? - Tushar Kathuria

0

首先获取纪元系统时间

System.currentTimeMillis()

然后使用日期对象,将时区设置为GMT并使用长值进行初始化

dateObj.setTimeZone(TimeZone.getTimeZone("GMT"))

0

若想获取 GMT 时间,请使用以下函数,其中dateInString为日期值,format则为日期格式,例如yyyyMMddHH

   public static long getDate(String dateInString,String format){
       long date = 0;
       SimpleDateFormat dateFormat = new SimpleDateFormat(format);

       try {
        dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
        Date d = dateFormat.parse(dateInString);
        date = d.getTime();
       } catch (ParseException e) {
        e.printStackTrace();
       }

       return date;
   }

0

0

如果您在应用程序中存储了时区和其GMT偏移量之间的映射,您可以调用TimeZone.getDefault()以获取设备的时区,并进行快速查找以返回GMT偏移量。这样,您就不必依赖可能棘手的日期/时间计算,并且可以确保您有正确的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接