Java –显示所有ZoneId及其UTC偏移量

一个Java 8示例,显示所有ZoneId及其偏移时间和分钟。

PS已通过Java 8和12测试

1.显示ZoneId和偏移量

DisplayZoneAndOffSet.java
package com.mkyong;

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

public class DisplayZoneAndOffSet {

    public static final boolean SORT_BY_REGION = false;

    public static void main(String[] argv) {

        Map<String, String> sortedMap = new LinkedHashMap<>();

        Map<String, String> allZoneIdsAndItsOffSet = getAllZoneIdsAndItsOffSet();

        //sort map by key
        if (SORT_BY_REGION) {
            allZoneIdsAndItsOffSet.entrySet().stream()
                    .sorted(Map.Entry.comparingByKey())
                    .forEachOrdered(e -> sortedMap.put(e.getKey(), e.getValue()));
        } else {
            // sort by value, descending order
            allZoneIdsAndItsOffSet.entrySet().stream()
                    .sorted(Map.Entry.<String, String>comparingByValue().reversed())
                    .forEachOrdered(e -> sortedMap.put(e.getKey(), e.getValue()));
        }

        // print map
        sortedMap.forEach((k, v) ->
        {
            String out = String.format("%35s (UTC%s) %n", k, v);
            System.out.printf(out);
        });

        System.out.println("\nTotal Zone IDs " + sortedMap.size());

    }

    private static Map<String, String> getAllZoneIdsAndItsOffSet() {

        Map<String, String> result = new HashMap<>();

        LocalDateTime localDateTime = LocalDateTime.now();

        for (String zoneId : ZoneId.getAvailableZoneIds()) {

            ZoneId id = ZoneId.of(zoneId);

            // LocalDateTime -> ZonedDateTime
            ZonedDateTime zonedDateTime = localDateTime.atZone(id);

            // ZonedDateTime -> ZoneOffset
            ZoneOffset zoneOffset = zonedDateTime.getOffset();

            //replace Z to +00:00
            String offset = zoneOffset.getId().replaceAll("Z", "+00:00");

            result.put(id.toString(), offset);

        }

        return result;

    }

}

输出量

Etc/GMT+12 (UTC-12:00) 
                  Pacific/Pago_Pago (UTC-11:00) 
                      Pacific/Samoa (UTC-11:00) 
                       Pacific/Niue (UTC-11:00) 
                           US/Samoa (UTC-11:00) 
                         Etc/GMT+11 (UTC-11:00) 
                     Pacific/Midway (UTC-11:00) 
                   Pacific/Honolulu (UTC-10:00) 
                  Pacific/Rarotonga (UTC-10:00) 
                     Pacific/Tahiti (UTC-10:00) 
                   Pacific/Johnston (UTC-10:00) 
                          US/Hawaii (UTC-10:00) 
                      SystemV/HST10 (UTC-10:00) 
                         Etc/GMT+10 (UTC-10:00) 
                  Pacific/Marquesas (UTC-09:30) 
                          Etc/GMT+9 (UTC-09:00) 
                    Pacific/Gambier (UTC-09:00) 
                       America/Atka (UTC-09:00) 
                       SystemV/YST9 (UTC-09:00) 
                       America/Adak (UTC-09:00) 
                        US/Aleutian (UTC-09:00) 
                          Etc/GMT+8 (UTC-08:00) 
                          US/Alaska (UTC-08:00) 
                     America/Juneau (UTC-08:00) 
                 America/Metlakatla (UTC-08:00) 
                    America/Yakutat (UTC-08:00) 
                   Pacific/Pitcairn (UTC-08:00) 
                      America/Sitka (UTC-08:00) 
                  America/Anchorage (UTC-08:00) 
                       SystemV/PST8 (UTC-08:00) 
                       America/Nome (UTC-08:00) 
                    SystemV/YST9YDT (UTC-08:00) 
                       Canada/Yukon (UTC-07:00) 
                     US/Pacific-New (UTC-07:00) 
                          Etc/GMT+7 (UTC-07:00) 
                         US/Arizona (UTC-07:00) 
               America/Dawson_Creek (UTC-07:00) 
                     Canada/Pacific (UTC-07:00) 
                            PST8PDT (UTC-07:00) 
                       SystemV/MST7 (UTC-07:00) 
                     America/Dawson (UTC-07:00) 
                   Mexico/BajaNorte (UTC-07:00) 
                    America/Tijuana (UTC-07:00) 
                    America/Creston (UTC-07:00) 
                 America/Hermosillo (UTC-07:00) 
               America/Santa_Isabel (UTC-07:00) 
                  America/Vancouver (UTC-07:00) 
                   America/Ensenada (UTC-07:00) 
                    America/Phoenix (UTC-07:00) 
                 America/Whitehorse (UTC-07:00) 
                America/Fort_Nelson (UTC-07:00) 
                    SystemV/PST8PDT (UTC-07:00) 
                America/Los_Angeles (UTC-07:00) 
                         US/Pacific (UTC-07:00) 
                America/El_Salvador (UTC-06:00) 
                  America/Guatemala (UTC-06:00) 
                     America/Belize (UTC-06:00) 
                    America/Managua (UTC-06:00) 
                America/Tegucigalpa (UTC-06:00) 
                          Etc/GMT+6 (UTC-06:00) 
                     Pacific/Easter (UTC-06:00) 
                     Mexico/BajaSur (UTC-06:00) 
                     America/Regina (UTC-06:00) 
                     America/Denver (UTC-06:00) 
                  Pacific/Galapagos (UTC-06:00) 
                America/Yellowknife (UTC-06:00) 
              America/Swift_Current (UTC-06:00) 
                     America/Inuvik (UTC-06:00) 
                   America/Mazatlan (UTC-06:00) 
                      America/Boise (UTC-06:00) 
                 America/Costa_Rica (UTC-06:00) 
                            MST7MDT (UTC-06:00) 
                       SystemV/CST6 (UTC-06:00) 
                  America/Chihuahua (UTC-06:00) 
                    America/Ojinaga (UTC-06:00) 
                 Chile/EasterIsland (UTC-06:00) 
                        US/Mountain (UTC-06:00) 
                   America/Edmonton (UTC-06:00) 
                    Canada/Mountain (UTC-06:00) 
              America/Cambridge_Bay (UTC-06:00) 
                             Navajo (UTC-06:00) 
                    SystemV/MST7MDT (UTC-06:00) 
                Canada/Saskatchewan (UTC-06:00) 
                   America/Shiprock (UTC-06:00) 
                     America/Panama (UTC-05:00) 
                    America/Chicago (UTC-05:00) 
                   America/Eirunepe (UTC-05:00) 
                          Etc/GMT+5 (UTC-05:00) 
                     Mexico/General (UTC-05:00) 
                 America/Porto_Acre (UTC-05:00) 
                  America/Guayaquil (UTC-05:00) 
               America/Rankin_Inlet (UTC-05:00) 
                         US/Central (UTC-05:00) 
                America/Rainy_River (UTC-05:00) 
               America/Indiana/Knox (UTC-05:00) 
        America/North_Dakota/Beulah (UTC-05:00) 
                  America/Monterrey (UTC-05:00) 
                    America/Jamaica (UTC-05:00) 
                   America/Atikokan (UTC-05:00) 
              America/Coral_Harbour (UTC-05:00) 
        America/North_Dakota/Center (UTC-05:00) 
                     America/Cayman (UTC-05:00) 
          America/Indiana/Tell_City (UTC-05:00) 
                America/Mexico_City (UTC-05:00) 
                  America/Matamoros (UTC-05:00) 
                            CST6C
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值