如何查找用户的GMT值,例如印度的GMT值为+05:30。
在Android中如何计算这个+05:30的值?
我需要这个值是因为我在我的应用程序中使用了一个Java库,该库具有带有此+05:30字段的函数,并且我希望通过计算生成此字段,以便不必为每个国家填写单独的值。
这是超棒的工作方式
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;
}
首先获取纪元系统时间
System.currentTimeMillis()
然后使用日期对象,将时区设置为GMT并使用长值进行初始化
dateObj.setTimeZone(TimeZone.getTimeZone("GMT"))
若想获取 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;
}
使用以下方法获取UTC时间:
public int GetUnixTime()
{
Calendar calendar = Calendar.getInstance();
long now = calendar.getTimeInMillis();
int utc = (int)(now / 1000);
return (utc);
}
在获取UTC时间后,将其与此网站http://www.xav.com/time.cgi中的Epoch进行比较。
请参阅下面的链接:
如果您在应用程序中存储了时区和其GMT偏移量之间的映射,您可以调用TimeZone.getDefault()以获取设备的时区,并进行快速查找以返回GMT偏移量。这样,您就不必依赖可能棘手的日期/时间计算,并且可以确保您有正确的值。
+05:30
。忽略填充零将破坏各种日期时间库和互操作性。 - Basil Bourque