我想知道大陆/国家提供的时区ID名称? 例如,
System.out.println(TimeZone.getTimeZone("PDT"));
I wanted answer as north america/america.
System.out.println(TimeZone.getTimeZone("GMT+05:30"));
I wanted answer as asia/india.
i am not getting the desired output.
The reason of asking question :: I am storing in my database on server the timezone(PDT,GMT+05:30) as given by the mobile
device.Now i need to perform analytics , that my app was accessed from which continent/country.
感谢帮助...
答案 0 :(得分:5)
没有。时区在全球范围内垂直切割,有许多国家拥有相同的时区。
例如,印度位于中国西南部,因此对于某些时区而言,“中国”的答案同样正确。
请访问此网站,查看时区地图及其适用的国家/地区:http://www.timeanddate.com/time/map/
答案 1 :(得分:3)
如果你想向后解决,这可能会有所帮助...... 一些时区包含您要查找的一些信息,例如,尝试:
for (String s : TimeZone.getAvailableIDs()) {
System.out.println(s);
}
输出如下..
...
Europe/Amsterdam
Europe/Andorra
Europe/Belgrade
Europe/Berlin
Europe/Bratislava
Europe/Brussels
Europe/Budapest
Europe/Copenhagen
Europe/Gibraltar
Europe/Ljubljana
Europe/Luxembourg
Europe/Madrid
Europe/Malta
Europe/Monaco
Europe/Oslo
Europe/Paris
...
您可以使用它来获取TimeZones并查看它们所拥有的信息,您可以获得所需的信息,尽管工作量很大。
System.out.println(TimeZone.getTimeZone("Europe/Amsterdam"));
System.out.println(TimeZone.getTimeZone("UTC"));
输出
sun.util.calendar.ZoneInfo[id="Europe/Amsterdam",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=180,lastRule=java.util.SimpleTimeZone[id=Europe/Amsterdam,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]]
sun.util.calendar.ZoneInfo[id="UTC",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
使用偏移量,您可以计算出与UTC时间的关系。即使在您不考虑夏令时等的简单情况下,这也非常复杂,棘手且耗时。可能,我会说。