ZoneId america = ZoneId.of("Asia/Shanghai");
ZoneRules rules = america.getRules();
System.out.println(rules);


ZoneRules[currentStandardOffset=+08:00]

AF Afghanistan Asia/Kabul UTC +04:30 AX Aland Islands Europe/Mariehamn UTC +02:00 AL Albania Europe/Tirane UTC +01:00 DZ Algeria Africa/Algiers UTC +01:00 AS American Samoa Pacific/Pago_Pago UTC -11:00 AD Andorra Europe/Andorra UTC +01:00 AO Angola Africa/Luanda UTC +01:00 AI Anguilla America/Anguilla UTC -04:00 1、 获取 系统时间SimpleDateFormat timeFormat = new SimpleDateFormat("HH-mm-ss"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); strTime = timeFormat.format(new java.util.Date()); strDate = 时区 除了我们经常用的东八区,新需求是根据经纬度 获取 当地 时区 ,并且将设备上的 时区 更新到当前 时区 获取 当前位置的经纬度是基本要求,本项目中有 获取 全球任意 城市 的天气需求,所以两个功能我就结合起来做了 1、 获取 天气信息 Api地址 Current weather data - OpenWeatherMap 有几种方式 获取 城市 的天气,而且当前API是免费 获取 ,我的需求是根据经纬度 获取 我用的是这个方法,可以 获取 到我所需要的尽可能详细的信息 其中天气接口返回的值里面有一个关键字 timezon. 列表如下:Etc/GMT+12Etc/GMT+11MITPacific/ApiaPacific/MidwayPacific/NiuePacific/Pago_PagoPacific/SamoaUS/SamoaAmerica/AdakAmerica/AtkaEtc/GMT+10HSTPacific/FakaofoPacific/HonoluluPacific/JohnstonPacific/Raro... 斯威夫特4 获取 当前用户 时区 :let currentTimeZone = TimeZone.current 获取 所有 时区 :let timeZoneIdentifiers = TimeZone.knownTimeZoneIdentifiers使用标识符创建 时区 :let berlin = TimeZone(identifier: "Europe/Berlin")! 获取 时区 城市 名称:let cityNam... Java所支持的所有 时区 ID(2013-11-03 20:50:24)Etc/GMT+12Etc/GMT+11MITPacific/ApiaPacific/MidwayPacific/NiuePacific/Pago_PagoPacific/SamoaUS/SamoaAmerica/AdakAmerica/AtkaEtc/GMT+10HSTPacific/FakaofoPacific/Honolu... 世界各国 时区 表 图片源自网络说明: +表示早上北京时间;-表示迟于北京时间ASIA 亚洲 城市 国家 时差Abadan阿巴丹伊朗-4:30Abu Dhabi阿布扎比阿联酋-4Aden亚丁也门-5Amman安曼约旦-6Ankara安卡拉土耳其-6Baghdad巴格达伊拉克-5Baku巴库阿塞拜疆-6Bandar Seri Begawan斯里巴加湾港文莱0Bangkok曼谷泰国-1Beirut贝... 1.2 格式2:+0800 SimpleDateFormat("Z").format(Calendar.getInstance(TimeZone.getTimeZone("GMT"),Locale.getDefault()).time) 其实这种格式已经是比较通用,业务上可以直接使用这种方式统一 时区 格式。 2 自定义格式:GMT+08:00 针对我的业务,已经定好了GMT+08:00这种格式,但是使用格式1存在着返回格式不统一的问题。