All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.squarespace.cldr.dates._CalendarFormatter_th Maven / Gradle / Ivy

//
//
// AUTO-GENERATED CLASS - DO NOT EDIT
//
//
package com.squarespace.cldr.dates;

import com.squarespace.cldr.CLDR;
import java.lang.Override;
import java.lang.String;
import java.lang.StringBuilder;
import java.time.ZonedDateTime;
import java.util.HashMap;

/**
 * Locale "th"
 * See http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
 */
public class _CalendarFormatter_th extends CalendarFormatterBase {
  public _CalendarFormatter_th() {
    this.locale = CLDR.Locale.th;
    this.firstDay = 1;
    this.minDays = 1;
    this.eras = new FieldVariants(
          new String[] {"ปีก่อน ค.ศ.", "ค.ศ."}, 
          new String[] {"ก่อน ค.ศ.", "ค.ศ."}, 
          new String[] {}, 
          new String[] {"ปีก่อนคริสต์ศักราช", "คริสต์ศักราช"});
    this.quartersFormat = new FieldVariants(
          new String[] {"ไตรมาส 1", "ไตรมาส 2", "ไตรมาส 3", "ไตรมาส 4"}, 
          new String[] {"1", "2", "3", "4"}, 
          new String[] {}, 
          new String[] {"ไตรมาส 1", "ไตรมาส 2", "ไตรมาส 3", "ไตรมาส 4"});
    this.quartersStandalone = new FieldVariants(
          new String[] {"ไตรมาส 1", "ไตรมาส 2", "ไตรมาส 3", "ไตรมาส 4"}, 
          new String[] {"1", "2", "3", "4"}, 
          new String[] {}, 
          new String[] {"ไตรมาส 1", "ไตรมาส 2", "ไตรมาส 3", "ไตรมาส 4"});
    this.monthsFormat = new FieldVariants(
          new String[] {"ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."}, 
          new String[] {"ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."}, 
          new String[] {}, 
          new String[] {"มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"});
    this.monthsStandalone = new FieldVariants(
          new String[] {"ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."}, 
          new String[] {"ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."}, 
          new String[] {}, 
          new String[] {"มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"});
    this.weekdaysFormat = new FieldVariants(
          new String[] {"อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส."}, 
          new String[] {"อา", "จ", "อ", "พ", "พฤ", "ศ", "ส"}, 
          new String[] {"อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส."}, 
          new String[] {"วันอาทิตย์", "วันจันทร์", "วันอังคาร", "วันพุธ", "วันพฤหัสบดี", "วันศุกร์", "วันเสาร์"});
    this.weekdaysStandalone = new FieldVariants(
          new String[] {"อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส."}, 
          new String[] {"อา", "จ", "อ", "พ", "พฤ", "ศ", "ส"}, 
          new String[] {"อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส."}, 
          new String[] {"วันอาทิตย์", "วันจันทร์", "วันอังคาร", "วันพุธ", "วันพฤหัสบดี", "วันศุกร์", "วันเสาร์"});
    this.dayPeriodsFormat = new FieldVariants(
          new String[] {"ก่อนเที่ยง", "หลังเที่ยง"}, 
          new String[] {"a", "p"}, 
          new String[] {}, 
          new String[] {"ก่อนเที่ยง", "หลังเที่ยง"});
    this.dayPeriodsStandalone = new FieldVariants(
          new String[] {"ก่อนเที่ยง", "หลังเที่ยง"}, 
          new String[] {"ก่อนเที่ยง", "หลังเที่ยง"}, 
          new String[] {}, 
          new String[] {"ก่อนเที่ยง", "หลังเที่ยง"});
    this.exemplarCities = new HashMap() { {
      put("America/Adak", "เอดัก");
      put("America/Anchorage", "แองเคอเรจ");
      put("America/Anguilla", "แองกิลลา");
      put("America/Antigua", "แอนติกา");
      put("America/Araguaina", "อารากัวนา");
      put("America/Argentina/Rio_Gallegos", "ริโอกาลเลกอส");
      put("America/Argentina/San_Juan", "ซานฮวน");
      put("America/Argentina/Ushuaia", "อูชูเอีย");
      put("America/Argentina/La_Rioja", "ลาริโอจา");
      put("America/Argentina/San_Luis", "ซันลูอิส");
      put("America/Argentina/Salta", "ซัลตา");
      put("America/Argentina/Tucuman", "ทูคูแมน");
      put("America/Aruba", "อารูบา");
      put("America/Asuncion", "อะซุนซิออง");
      put("America/Bahia", "บาเยีย");
      put("America/Bahia_Banderas", "บาเอียบันเดรัส");
      put("America/Barbados", "บาร์เบโดส");
      put("America/Belem", "เบเลง");
      put("America/Belize", "เบลีซ");
      put("America/Blanc-Sablon", "บลังค์-ซาบลอน");
      put("America/Boa_Vista", "บัววีชตา");
      put("America/Bogota", "โบโกตา");
      put("America/Boise", "บอยซี");
      put("America/Buenos_Aires", "บัวโนสไอเรส");
      put("America/Cambridge_Bay", "อ่าวแคมบริดจ์");
      put("America/Campo_Grande", "กัมปูกรันดี");
      put("America/Cancun", "แคนคุน");
      put("America/Caracas", "คาราคัส");
      put("America/Catamarca", "กาตามาร์กา");
      put("America/Cayenne", "กาแยน");
      put("America/Cayman", "เคย์แมน");
      put("America/Chicago", "ชิคาโก");
      put("America/Chihuahua", "ชีวาวา");
      put("America/Coral_Harbour", "คอรัลฮาร์เบอร์");
      put("America/Cordoba", "คอร์โดบา");
      put("America/Costa_Rica", "คอสตาริกา");
      put("America/Creston", "เครสตัน");
      put("America/Cuiaba", "กุยาบา");
      put("America/Curacao", "คูราเซา");
      put("America/Danmarkshavn", "ดานมาร์กสฮาวน์");
      put("America/Dawson", "ดอว์สัน");
      put("America/Dawson_Creek", "ดอว์สัน ครีก");
      put("America/Denver", "เดนเวอร์");
      put("America/Detroit", "ดีทรอยต์");
      put("America/Dominica", "โดมินิกา");
      put("America/Edmonton", "เอดมันตัน");
      put("America/Eirunepe", "เอรูเนเป");
      put("America/El_Salvador", "เอลซัลวาดอร์");
      put("America/Fort_Nelson", "ฟอร์ตเนลสัน");
      put("America/Fortaleza", "ฟอร์ตาเลซา");
      put("America/Glace_Bay", "เกลซเบย์");
      put("America/Godthab", "กอดแธบ");
      put("America/Goose_Bay", "กูสเบย์");
      put("America/Grand_Turk", "แกรนด์เติร์ก");
      put("America/Grenada", "เกรนาดา");
      put("America/Guadeloupe", "กวาเดอลูป");
      put("America/Guatemala", "กัวเตมาลา");
      put("America/Guayaquil", "กัวยากิล");
      put("America/Guyana", "กายอานา");
      put("America/Halifax", "แฮลิแฟกซ์");
      put("America/Havana", "ฮาวานา");
      put("America/Hermosillo", "เอร์โมซีโย");
      put("America/Indiana/Vincennes", "วินเซนเนส, อินดีแอนา");
      put("America/Indiana/Petersburg", "ปีเตอร์สเบิร์ก, อินดีแอนา");
      put("America/Indiana/Tell_City", "เทลล์ซิตี, อินดีแอนา");
      put("America/Indiana/Knox", "นอกซ์, อินดีแอนา");
      put("America/Indiana/Winamac", "วินาแมค, อินดีแอนา");
      put("America/Indiana/Marengo", "มาเรงโก, อินดีแอนา");
      put("America/Indiana/Vevay", "วีเวย์, อินดีแอนา");
      put("America/Indianapolis", "อินเดียแนโพลิส");
      put("America/Inuvik", "อินูวิก");
      put("America/Iqaluit", "อีกวาลิต");
      put("America/Jamaica", "จาเมกา");
      put("America/Jujuy", "จูจิว");
      put("America/Juneau", "จูโน");
      put("America/Kentucky/Monticello", "มอนติเซลโล, เคนตักกี");
      put("America/Kralendijk", "คราเลนดิจค์");
      put("America/La_Paz", "ลาปาซ");
      put("America/Lima", "ลิมา");
      put("America/Los_Angeles", "ลอสแองเจลิส");
      put("America/Louisville", "ลูส์วิลล์");
      put("America/Lower_Princes", "โลเวอร์พรินซ์ ควอเตอร์");
      put("America/Maceio", "มาเซโอ");
      put("America/Managua", "มานากัว");
      put("America/Manaus", "มาเนาส์");
      put("America/Marigot", "มาริโกต์");
      put("America/Martinique", "มาร์ตินีก");
      put("America/Matamoros", "มาตาโมรอส");
      put("America/Mazatlan", "มาซาทลาน");
      put("America/Mendoza", "เมนดูซา");
      put("America/Menominee", "เมโนมินี");
      put("America/Merida", "เมรีดา");
      put("America/Metlakatla", "เมทลากาตละ");
      put("America/Mexico_City", "เม็กซิโกซิตี");
      put("America/Miquelon", "มีเกอลง");
      put("America/Moncton", "มองตัน");
      put("America/Monterrey", "มอนเตร์เรย์");
      put("America/Montevideo", "มอนเตวิเดโอ");
      put("America/Montserrat", "มอนเซอร์รัต");
      put("America/Nassau", "แนสซอ");
      put("America/New_York", "นิวยอร์ก");
      put("America/Nipigon", "นิปิกอน");
      put("America/Nome", "นอม");
      put("America/Noronha", "โนรอนฮา");
      put("America/North_Dakota/Beulah", "โบลาห์, นอร์ทดาโคตา");
      put("America/North_Dakota/New_Salem", "นิวเซเลม, นอร์ทดาโคตา");
      put("America/North_Dakota/Center", "เซนเตอร์, นอร์ทดาโคตา");
      put("America/Ojinaga", "โอจินากา");
      put("America/Panama", "ปานามา");
      put("America/Pangnirtung", "พางนีทัง");
      put("America/Paramaribo", "ปารามาริโบ");
      put("America/Phoenix", "ฟินิกซ์");
      put("America/Port-au-Prince", "ปอร์โตแปรงซ์");
      put("America/Port_of_Spain", "พอร์ทออฟสเปน");
      put("America/Porto_Velho", "ปอร์ตูเวลโย");
      put("America/Puerto_Rico", "เปอโตริโก");
      put("America/Rainy_River", "เรนนี่ริเวอร์");
      put("America/Rankin_Inlet", "แรงกินอินเล็ต");
      put("America/Recife", "เรซีเฟ");
      put("America/Regina", "ริไจนา");
      put("America/Resolute", "เรโซลูท");
      put("America/Rio_Branco", "รีโอบรังโก");
      put("America/Santa_Isabel", "ซานตาอิซาเบล");
      put("America/Santarem", "ซันตาเรม");
      put("America/Santiago", "ซันติอาโก");
      put("America/Santo_Domingo", "ซานโต โดมิงโก");
      put("America/Sao_Paulo", "เซาเปาลู");
      put("America/Scoresbysund", "สกอเรสไบซันด์");
      put("America/Sitka", "ซิตกา");
      put("America/St_Barthelemy", "เซนต์บาร์เธเลมี");
      put("America/St_Johns", "เซนต์จอนส์");
      put("America/St_Kitts", "เซนต์คิตส์");
      put("America/St_Lucia", "เซนต์ลูเซีย");
      put("America/St_Thomas", "เซนต์โธมัส");
      put("America/St_Vincent", "เซนต์วินเซนต์");
      put("America/Swift_Current", "สวิฟต์เคอร์เรนต์");
      put("America/Tegucigalpa", "เตกูซิกัลปา");
      put("America/Thule", "ทูเล");
      put("America/Thunder_Bay", "ทันเดอร์เบย์");
      put("America/Tijuana", "ทิฮัวนา");
      put("America/Toronto", "โทรอนโต");
      put("America/Tortola", "ตอร์โตลา");
      put("America/Vancouver", "แวนคูเวอร์");
      put("America/Whitehorse", "ไวต์ฮอร์ส");
      put("America/Winnipeg", "วินนิเพก");
      put("America/Yakutat", "ยากูทัต");
      put("America/Yellowknife", "เยลโลว์ไนฟ์");
      put("Atlantic/Azores", "อาซอเรส");
      put("Atlantic/Bermuda", "เบอร์มิวดา");
      put("Atlantic/Canary", "คะเนรี");
      put("Atlantic/Cape_Verde", "เคปเวิร์ด");
      put("Atlantic/Faeroe", "แฟโร");
      put("Atlantic/Madeira", "มาเดรา");
      put("Atlantic/Reykjavik", "เรคยาวิก");
      put("Atlantic/South_Georgia", "เซาท์ จอร์เจีย");
      put("Atlantic/St_Helena", "เซนต์เฮเลนา");
      put("Atlantic/Stanley", "สแตนลีย์");
      put("Europe/Amsterdam", "อัมสเตอดัม");
      put("Europe/Andorra", "อันดอร์รา");
      put("Europe/Astrakhan", "แอสตราคาน");
      put("Europe/Athens", "เอเธนส์");
      put("Europe/Belgrade", "เบลเกรด");
      put("Europe/Berlin", "เบอร์ลิน");
      put("Europe/Bratislava", "บราติสลาวา");
      put("Europe/Brussels", "บรัสเซลส์");
      put("Europe/Bucharest", "บูคาเรส");
      put("Europe/Budapest", "บูดาเปส");
      put("Europe/Busingen", "บุสซิงเง็น");
      put("Europe/Chisinau", "คีชีเนา");
      put("Europe/Copenhagen", "โคเปนเฮเกน");
      put("Europe/Dublin", "ดับบลิน");
      put("Europe/Gibraltar", "ยิบรอลตาร์");
      put("Europe/Guernsey", "เกิร์นซีย์");
      put("Europe/Helsinki", "เฮลซิงกิ");
      put("Europe/Isle_of_Man", "เกาะแมน");
      put("Europe/Istanbul", "อิสตันบูล");
      put("Europe/Jersey", "เจอร์ซีย์");
      put("Europe/Kaliningrad", "คาลินิงกราด");
      put("Europe/Kiev", "เคียฟ");
      put("Europe/Kirov", "คิรอฟ");
      put("Europe/Lisbon", "ลิสบอน");
      put("Europe/Ljubljana", "ลูบลิยานา");
      put("Europe/London", "ลอนดอน");
      put("Europe/Luxembourg", "ลักเซมเบิร์ก");
      put("Europe/Madrid", "มาดริด");
      put("Europe/Malta", "มอลตา");
      put("Europe/Mariehamn", "มารีฮามน์");
      put("Europe/Minsk", "มินสก์");
      put("Europe/Monaco", "โมนาโก");
      put("Europe/Moscow", "มอสโก");
      put("Europe/Oslo", "ออสโล");
      put("Europe/Paris", "ปารีส");
      put("Europe/Podgorica", "พอดกอรีตซา");
      put("Europe/Prague", "ปราก");
      put("Europe/Riga", "ริกา");
      put("Europe/Rome", "โรม");
      put("Europe/Samara", "ซามารา");
      put("Europe/San_Marino", "ซานมารีโน");
      put("Europe/Sarajevo", "ซาราเยโว");
      put("Europe/Simferopol", "ซิมเฟอโรโปล");
      put("Europe/Skopje", "สโกเปีย");
      put("Europe/Sofia", "โซเฟีย");
      put("Europe/Stockholm", "สตอกโฮล์ม");
      put("Europe/Tallinn", "ทาลลินน์");
      put("Europe/Tirane", "ติรานา");
      put("Europe/Ulyanovsk", "อะลิยานอฟ");
      put("Europe/Uzhgorod", "อัซโกร็อด");
      put("Europe/Vaduz", "วาดุซ");
      put("Europe/Vatican", "วาติกัน");
      put("Europe/Vienna", "เวียนนา");
      put("Europe/Vilnius", "วิลนีอุส");
      put("Europe/Volgograd", "วอลโกกราด");
      put("Europe/Warsaw", "วอร์ซอ");
      put("Europe/Zagreb", "ซาเกร็บ");
      put("Europe/Zaporozhye", "ซาโปโรซี");
      put("Europe/Zurich", "ซูริค");
      put("Africa/Abidjan", "อาบีจาน");
      put("Africa/Accra", "อักกรา");
      put("Africa/Addis_Ababa", "แอดดิสอาบาบา");
      put("Africa/Algiers", "แอลเจียร์");
      put("Africa/Asmera", "แอสมารา");
      put("Africa/Bamako", "บามาโก");
      put("Africa/Bangui", "บังกี");
      put("Africa/Banjul", "บันจูล");
      put("Africa/Bissau", "บิสเซา");
      put("Africa/Blantyre", "แบลนไทร์");
      put("Africa/Brazzaville", "บราซซาวิล");
      put("Africa/Bujumbura", "บูจุมบูรา");
      put("Africa/Cairo", "ไคโร");
      put("Africa/Casablanca", "คาสซาบลางก้า");
      put("Africa/Ceuta", "เซวตา");
      put("Africa/Conakry", "โกนากรี");
      put("Africa/Dakar", "ดาการ์");
      put("Africa/Dar_es_Salaam", "ดาร์เอสซาลาม");
      put("Africa/Djibouti", "จิบูตี");
      put("Africa/Douala", "ดูอาลา");
      put("Africa/El_Aaiun", "เอลไอย์อุง");
      put("Africa/Freetown", "ฟรีทาวน์");
      put("Africa/Gaborone", "กาโบโรเน");
      put("Africa/Harare", "ฮาราเร");
      put("Africa/Johannesburg", "โจฮันเนสเบอร์ก");
      put("Africa/Juba", "จูบา");
      put("Africa/Kampala", "คัมพาลา");
      put("Africa/Khartoum", "คาร์ทูม");
      put("Africa/Kigali", "คิกาลี");
      put("Africa/Kinshasa", "กินชาซา");
      put("Africa/Lagos", "ลากอส");
      put("Africa/Libreville", "ลีเบรอวิล");
      put("Africa/Lome", "โลเม");
      put("Africa/Luanda", "ลูอันดา");
      put("Africa/Lubumbashi", "ลูบัมบาชิ");
      put("Africa/Lusaka", "ลูซากา");
      put("Africa/Malabo", "มาลาโบ");
      put("Africa/Maputo", "มาปูโต");
      put("Africa/Maseru", "มาเซรู");
      put("Africa/Mbabane", "อัมบาบาเน");
      put("Africa/Mogadishu", "โมกาดิชู");
      put("Africa/Monrovia", "มันโรเวีย");
      put("Africa/Nairobi", "ไนโรเบีย");
      put("Africa/Ndjamena", "เอ็นจาเมนา");
      put("Africa/Niamey", "นีอาเมย์");
      put("Africa/Nouakchott", "นูแอกชอต");
      put("Africa/Ouagadougou", "วากาดูกู");
      put("Africa/Porto-Novo", "ปอร์โต-โนโว");
      put("Africa/Sao_Tome", "เซาตูเม");
      put("Africa/Tripoli", "ตรีโปลี");
      put("Africa/Tunis", "ตูนิส");
      put("Africa/Windhoek", "วินด์ฮุก");
      put("Asia/Aden", "เอเดน");
      put("Asia/Almaty", "อัลมาตี");
      put("Asia/Amman", "อัมมาน");
      put("Asia/Anadyr", "อานาดีร์");
      put("Asia/Aqtau", "อัคตาอู");
      put("Asia/Aqtobe", "อัคโทบี");
      put("Asia/Ashgabat", "อาชกาบัต");
      put("Asia/Baghdad", "แบกแดด");
      put("Asia/Bahrain", "บาห์เรน");
      put("Asia/Baku", "บากู");
      put("Asia/Bangkok", "กรุงเทพ");
      put("Asia/Barnaul", "บราโมล");
      put("Asia/Beirut", "เบรุต");
      put("Asia/Bishkek", "บิชเคก");
      put("Asia/Brunei", "บรูไน");
      put("Asia/Calcutta", "โกลกาตา");
      put("Asia/Chita", "ชิตา");
      put("Asia/Choibalsan", "ชอยบาลซาน");
      put("Asia/Colombo", "โคลัมโบ");
      put("Asia/Damascus", "ดามัสกัส");
      put("Asia/Dhaka", "ดากา");
      put("Asia/Dili", "ดิลี");
      put("Asia/Dubai", "ดูไบ");
      put("Asia/Dushanbe", "ดูชานเบ");
      put("Asia/Gaza", "กาซา");
      put("Asia/Hebron", "เฮบรอน");
      put("Asia/Hong_Kong", "ฮ่องกง");
      put("Asia/Hovd", "ฮอฟด์");
      put("Asia/Irkutsk", "อีร์คุตสค์");
      put("Asia/Jakarta", "จาการ์ตา");
      put("Asia/Jayapura", "จายาปุระ");
      put("Asia/Jerusalem", "เยรูซาเลม");
      put("Asia/Kabul", "คาบูล");
      put("Asia/Kamchatka", "คามชัตกา");
      put("Asia/Karachi", "การาจี");
      put("Asia/Katmandu", "กาตมันดุ");
      put("Asia/Khandyga", "ฮันดืยกา");
      put("Asia/Krasnoyarsk", "ครัสโนยาร์สก์");
      put("Asia/Kuala_Lumpur", "กัวลาลัมเปอร์");
      put("Asia/Kuching", "กูชิง");
      put("Asia/Kuwait", "คูเวต");
      put("Asia/Macau", "มาเก๊า");
      put("Asia/Magadan", "มากาดาน");
      put("Asia/Makassar", "มากัสซาร์");
      put("Asia/Manila", "มะนิลา");
      put("Asia/Muscat", "มัสกัต");
      put("Asia/Nicosia", "นิโคเซีย");
      put("Asia/Novokuznetsk", "โนโวคุซเนตสค์");
      put("Asia/Novosibirsk", "โนโวซิบิร์สก์");
      put("Asia/Omsk", "โอมสก์");
      put("Asia/Oral", "ออรัล");
      put("Asia/Phnom_Penh", "พนมเปญ");
      put("Asia/Pontianak", "พอนเทียนัก");
      put("Asia/Pyongyang", "เปียงยาง");
      put("Asia/Qatar", "กาตาร์");
      put("Asia/Qyzylorda", "ไคซีลอร์ดา");
      put("Asia/Rangoon", "ย่างกุ้ง");
      put("Asia/Riyadh", "ริยาร์ด");
      put("Asia/Saigon", "นครโฮจิมินห์");
      put("Asia/Sakhalin", "ซาคาลิน");
      put("Asia/Samarkand", "ซามาร์กานด์");
      put("Asia/Seoul", "โซล");
      put("Asia/Shanghai", "เซี่ยงไฮ้");
      put("Asia/Singapore", "สิงคโปร์");
      put("Asia/Srednekolymsk", "ซเรดเนคโคลิมสก์");
      put("Asia/Taipei", "ไทเป");
      put("Asia/Tashkent", "ทาชเคนต์");
      put("Asia/Tbilisi", "ทบิลิซิ");
      put("Asia/Tehran", "เตหะราน");
      put("Asia/Thimphu", "ทิมพู");
      put("Asia/Tokyo", "โตเกียว");
      put("Asia/Tomsk", "ตอมสค์");
      put("Asia/Ulaanbaatar", "อูลานบาตอร์");
      put("Asia/Urumqi", "อุรุมชี");
      put("Asia/Ust-Nera", "อุสต์เนรา");
      put("Asia/Vientiane", "เวียงจันทน์");
      put("Asia/Vladivostok", "วลาดิโวสต็อก");
      put("Asia/Yakutsk", "ยาคุตสค์");
      put("Asia/Yekaterinburg", "ยีคาเตอรินเบิร์ก");
      put("Asia/Yerevan", "เยเรวาน");
      put("Indian/Antananarivo", "อันตานานาริโว");
      put("Indian/Chagos", "ชากัส");
      put("Indian/Christmas", "คริสต์มาส");
      put("Indian/Cocos", "โคโคส");
      put("Indian/Comoro", "โคโมโร");
      put("Indian/Kerguelen", "แกร์เกอลอง");
      put("Indian/Mahe", "มาเอ");
      put("Indian/Maldives", "มัลดีฟส์");
      put("Indian/Mauritius", "มอริเชียส");
      put("Indian/Mayotte", "มาโยเต");
      put("Indian/Reunion", "เรอูนียง");
      put("Australia/Adelaide", "แอดิเลด");
      put("Australia/Brisbane", "บริสเบน");
      put("Australia/Broken_Hill", "โบรกเคนฮิลล์");
      put("Australia/Currie", "คูร์รี");
      put("Australia/Darwin", "ดาร์วิน");
      put("Australia/Eucla", "ยูคลา");
      put("Australia/Hobart", "โฮบาร์ต");
      put("Australia/Lindeman", "ลินดีแมน");
      put("Australia/Lord_Howe", "ลอร์ดโฮว์");
      put("Australia/Melbourne", "เมลเบิร์น");
      put("Australia/Perth", "เพิร์ท");
      put("Australia/Sydney", "ซิดนีย์");
      put("Pacific/Apia", "อาปีอา");
      put("Pacific/Auckland", "โอคแลนด์");
      put("Pacific/Bougainville", "บูเกนวิลล์");
      put("Pacific/Chatham", "แชทัม");
      put("Pacific/Easter", "อีสเตอร์");
      put("Pacific/Efate", "เอฟาเต");
      put("Pacific/Enderbury", "เอนเดอร์เบอรี");
      put("Pacific/Fakaofo", "ฟาเคาโฟ");
      put("Pacific/Fiji", "ฟิจิ");
      put("Pacific/Funafuti", "ฟูนะฟูตี");
      put("Pacific/Galapagos", "กาลาปาโกส");
      put("Pacific/Gambier", "แกมเบียร์");
      put("Pacific/Guadalcanal", "กัวดัลคานัล");
      put("Pacific/Guam", "กวม");
      put("Pacific/Honolulu", "โฮโนลูลู");
      put("Pacific/Johnston", "จอห์นสตัน");
      put("Pacific/Kiritimati", "คิริทิมาตี");
      put("Pacific/Kosrae", "คอสไร");
      put("Pacific/Kwajalein", "ควาจาเลน");
      put("Pacific/Majuro", "มาจูโร");
      put("Pacific/Marquesas", "มาร์เคซัส");
      put("Pacific/Midway", "มิดเวย์");
      put("Pacific/Nauru", "นาอูรู");
      put("Pacific/Niue", "นีอูเอ");
      put("Pacific/Norfolk", "นอร์ฟอล์ก");
      put("Pacific/Noumea", "นูเมอา");
      put("Pacific/Pago_Pago", "ปาโก ปาโก");
      put("Pacific/Palau", "ปาเลา");
      put("Pacific/Pitcairn", "พิตแคร์น");
      put("Pacific/Ponape", "โปนาเป");
      put("Pacific/Port_Moresby", "พอร์ตมอร์สบี");
      put("Pacific/Rarotonga", "ราโรตองกา");
      put("Pacific/Saipan", "ไซปัน");
      put("Pacific/Tahiti", "ตาฮีตี");
      put("Pacific/Tarawa", "ตาระวา");
      put("Pacific/Tongatapu", "ตองกาตาปู");
      put("Pacific/Truk", "ทรัก");
      put("Pacific/Wake", "เวก");
      put("Pacific/Wallis", "วาลลิส");
      put("Arctic/Longyearbyen", "ลองเยียร์เบียน");
      put("Antarctica/Casey", "เคซีย์");
      put("Antarctica/Davis", "เดวิส");
      put("Antarctica/DumontDUrville", "ดูมองต์ดูร์วิลล์");
      put("Antarctica/Macquarie", "แมคควอรี");
      put("Antarctica/Mawson", "มอว์สัน");
      put("Antarctica/McMurdo", "แมคมัวโด");
      put("Antarctica/Palmer", "พาล์เมอร์");
      put("Antarctica/Rothera", "โรธีรา");
      put("Antarctica/Syowa", "ไซโยวา");
      put("Antarctica/Troll", "โทรล");
      put("Antarctica/Vostok", "วอสตอค");
      put("Etc/GMT", "GMT");
      put("Etc/GMT1", "GMT+1");
      put("Etc/GMT10", "GMT+10");
      put("Etc/GMT11", "GMT+11");
      put("Etc/GMT12", "GMT+12");
      put("Etc/GMT2", "GMT+2");
      put("Etc/GMT3", "GMT+3");
      put("Etc/GMT4", "GMT+4");
      put("Etc/GMT5", "GMT+5");
      put("Etc/GMT6", "GMT+6");
      put("Etc/GMT7", "GMT+7");
      put("Etc/GMT8", "GMT+8");
      put("Etc/GMT9", "GMT+9");
      put("Etc/GMT-1", "GMT-1");
      put("Etc/GMT-10", "GMT-10");
      put("Etc/GMT-11", "GMT-11");
      put("Etc/GMT-12", "GMT-12");
      put("Etc/GMT-13", "GMT-13");
      put("Etc/GMT-14", "GMT-14");
      put("Etc/GMT-2", "GMT-2");
      put("Etc/GMT-3", "GMT-3");
      put("Etc/GMT-4", "GMT-4");
      put("Etc/GMT-5", "GMT-5");
      put("Etc/GMT-6", "GMT-6");
      put("Etc/GMT-7", "GMT-7");
      put("Etc/GMT-8", "GMT-8");
      put("Etc/GMT-9", "GMT-9");
      put("Etc/UTC", "UTC");
      put("Etc/Unknown", "เมืองที่ไม่รู้จัก");
    } };

    this.timezoneNames = new HashMap() { {

      put("Europe/Dublin", new TimeZoneNames("Europe/Dublin",   new TimeZoneNames.Name(null, null, "เวลามาตรฐานไอร์แลนด์"),
        null));

      put("Europe/London", new TimeZoneNames("Europe/London",   new TimeZoneNames.Name(null, null, "เวลาฤดูร้อนอังกฤษ"),
        null));

      put("Etc/UTC", new TimeZoneNames("Etc/UTC",   new TimeZoneNames.Name(null, "เวลาสากลเชิงพิกัด", null),
        new TimeZoneNames.Name(null, "UTC", null)));
    } };

    this.metazoneNames = new HashMap() { {

      put("Acre", new TimeZoneNames("Acre", 
        new TimeZoneNames.Name("เวลาอาเกร", "เวลามาตรฐานอาเกร", "เวลาฤดูร้อนอาเกร"),
        null));

      put("Afghanistan", new TimeZoneNames("Afghanistan", 
        new TimeZoneNames.Name(null, "เวลาอัฟกานิสถาน", null),
        null));

      put("Africa_Central", new TimeZoneNames("Africa_Central", 
        new TimeZoneNames.Name(null, "เวลาแอฟริกากลาง", null),
        null));

      put("Africa_Eastern", new TimeZoneNames("Africa_Eastern", 
        new TimeZoneNames.Name(null, "เวลาแอฟริกาตะวันออก", null),
        null));

      put("Africa_Southern", new TimeZoneNames("Africa_Southern", 
        new TimeZoneNames.Name(null, "เวลาแอฟริกาใต้", null),
        null));

      put("Africa_Western", new TimeZoneNames("Africa_Western", 
        new TimeZoneNames.Name("เวลาแอฟริกาตะวันตก", "เวลามาตรฐานแอฟริกาตะวันตก", "เวลาฤดูร้อนแอฟริกาตะวันตก"),
        null));

      put("Alaska", new TimeZoneNames("Alaska", 
        new TimeZoneNames.Name("เวลาอะแลสกา", "เวลามาตรฐานอะแลสกา", "เวลาออมแสงของอะแลสกา"),
        null));

      put("Almaty", new TimeZoneNames("Almaty", 
        new TimeZoneNames.Name("เวลาอัลมาตี", "เวลามาตรฐานอัลมาตี", "เวลาฤดูร้อนอัลมาตี"),
        null));

      put("Amazon", new TimeZoneNames("Amazon", 
        new TimeZoneNames.Name("เวลาแอมะซอน", "เวลามาตรฐานแอมะซอน", "เวลาฤดูร้อนแอมะซอน"),
        null));

      put("America_Central", new TimeZoneNames("America_Central", 
        new TimeZoneNames.Name("เวลาตอนกลางในอเมริกาเหนือ", "เวลามาตรฐานตอนกลางในอเมริกาเหนือ", "เวลาออมแสงตอนกลางในอเมริกาเหนือ"),
        null));

      put("America_Eastern", new TimeZoneNames("America_Eastern", 
        new TimeZoneNames.Name("เวลาทางตะวันออกในอเมริกาเหนือ", "เวลามาตรฐานทางตะวันออกในอเมริกาเหนือ", "เวลาออมแสงทางตะวันออกในอเมริกาเหนือ"),
        null));

      put("America_Mountain", new TimeZoneNames("America_Mountain", 
        new TimeZoneNames.Name("เวลาแถบภูเขาในอเมริกาเหนือ", "เวลามาตรฐานแถบภูเขาในอเมริกาเหนือ", "เวลาออมแสงแถบภูเขาในอเมริกาเหนือ"),
        null));

      put("America_Pacific", new TimeZoneNames("America_Pacific", 
        new TimeZoneNames.Name("เวลาแปซิฟิกในอเมริกาเหนือ", "เวลามาตรฐานแปซิฟิกในอเมริกาเหนือ", "เวลาออมแสงแปซิฟิกในอเมริกาเหนือ"),
        null));

      put("Anadyr", new TimeZoneNames("Anadyr", 
        new TimeZoneNames.Name("เวลาอะนาดีร์", "เวลามาตรฐานอะนาดีร์", "เวลาฤดูร้อนอะนาดีร์"),
        null));

      put("Apia", new TimeZoneNames("Apia", 
        new TimeZoneNames.Name("เวลาอาปีอา", "เวลามาตรฐานอาปีอา", "เวลาออมแสงอาปีอา"),
        null));

      put("Aqtau", new TimeZoneNames("Aqtau", 
        new TimeZoneNames.Name("เวลาอัคตาอู", "เวลามาตรฐานอัคตาอู", "เวลาฤดูร้อนอัคตาอู"),
        null));

      put("Aqtobe", new TimeZoneNames("Aqtobe", 
        new TimeZoneNames.Name("เวลาอัคโทเบ", "เวลามาตรฐานอัคโทเบ", "เวลาฤดูร้อนอัคโทเบ"),
        null));

      put("Arabian", new TimeZoneNames("Arabian", 
        new TimeZoneNames.Name("เวลาอาหรับ", "เวลามาตรฐานอาหรับ", "เวลาออมแสงอาหรับ"),
        null));

      put("Argentina", new TimeZoneNames("Argentina", 
        new TimeZoneNames.Name("เวลาอาร์เจนตินา", "เวลามาตรฐานอาร์เจนตินา", "เวลาฤดูร้อนอาร์เจนตินา"),
        null));

      put("Argentina_Western", new TimeZoneNames("Argentina_Western", 
        new TimeZoneNames.Name("เวลาตะวันตกของอาร์เจนตินา", "เวลามาตรฐานทางตะวันตกของอาร์เจนตินา", "เวลาฤดูร้อนทางตะวันตกของอาร์เจนตินา"),
        null));

      put("Armenia", new TimeZoneNames("Armenia", 
        new TimeZoneNames.Name("เวลาอาร์เมเนีย", "เวลามาตรฐานอาร์เมเนีย", "เวลาฤดูร้อนอาร์เมเนีย"),
        null));

      put("Atlantic", new TimeZoneNames("Atlantic", 
        new TimeZoneNames.Name("เวลาแอตแลนติก", "เวลามาตรฐานแอตแลนติก", "เวลาออมแสงของแอตแลนติก"),
        null));

      put("Australia_Central", new TimeZoneNames("Australia_Central", 
        new TimeZoneNames.Name("เวลาออสเตรเลียกลาง", "เวลามาตรฐานทางตอนกลางของออสเตรเลีย", "เวลาออมแสงทางตอนกลางของออสเตรเลีย"),
        null));

      put("Australia_CentralWestern", new TimeZoneNames("Australia_CentralWestern", 
        new TimeZoneNames.Name("เวลาทางตะวันตกตอนกลางของออสเตรเลีย", "เวลามาตรฐานทางตะวันตกตอนกลางของออสเตรเลีย", "เวลาออมแสงทางตะวันตกตอนกลางของออสเตรเลีย"),
        null));

      put("Australia_Eastern", new TimeZoneNames("Australia_Eastern", 
        new TimeZoneNames.Name("เวลาออสเตรเลียตะวันออก", "เวลามาตรฐานทางตะวันออกของออสเตรเลีย", "เวลาออมแสงทางตะวันออกของออสเตรเลีย"),
        null));

      put("Australia_Western", new TimeZoneNames("Australia_Western", 
        new TimeZoneNames.Name("เวลาออสเตรเลียตะวันตก", "เวลามาตรฐานทางตะวันตกของออสเตรเลีย", "เวลาออมแสงทางตะวันตกของออสเตรเลีย"),
        null));

      put("Azerbaijan", new TimeZoneNames("Azerbaijan", 
        new TimeZoneNames.Name("เวลาอาเซอร์ไบจาน", "เวลามาตรฐานอาเซอร์ไบจาน", "เวลาฤดูร้อนอาเซอร์ไบจาน"),
        null));

      put("Azores", new TimeZoneNames("Azores", 
        new TimeZoneNames.Name("เวลาอะโซร์ส", "เวลามาตรฐานอะโซร์ส", "เวลาฤดูร้อนอะโซร์ส"),
        null));

      put("Bangladesh", new TimeZoneNames("Bangladesh", 
        new TimeZoneNames.Name("เวลาบังกลาเทศ", "เวลามาตรฐานบังกลาเทศ", "เวลาฤดูร้อนบังกลาเทศ"),
        null));

      put("Bhutan", new TimeZoneNames("Bhutan", 
        new TimeZoneNames.Name(null, "เวลาภูฏาน", null),
        null));

      put("Bolivia", new TimeZoneNames("Bolivia", 
        new TimeZoneNames.Name(null, "เวลาโบลิเวีย", null),
        null));

      put("Brasilia", new TimeZoneNames("Brasilia", 
        new TimeZoneNames.Name("เวลาบราซิเลีย", "เวลามาตรฐานบราซิเลีย", "เวลาฤดูร้อนบราซิเลีย"),
        null));

      put("Brunei", new TimeZoneNames("Brunei", 
        new TimeZoneNames.Name(null, "เวลาบรูไนดารุสซาลาม", null),
        null));

      put("Cape_Verde", new TimeZoneNames("Cape_Verde", 
        new TimeZoneNames.Name("เวลาเคปเวิร์ด", "เวลามาตรฐานเคปเวิร์ด", "เวลาฤดูร้อนเคปเวิร์ด"),
        null));

      put("Casey", new TimeZoneNames("Casey", 
        new TimeZoneNames.Name(null, "เวลาเคซีย์", null),
        null));

      put("Chamorro", new TimeZoneNames("Chamorro", 
        new TimeZoneNames.Name(null, "เวลาชามอร์โร", null),
        null));

      put("Chatham", new TimeZoneNames("Chatham", 
        new TimeZoneNames.Name("เวลาแชทัม", "เวลามาตรฐานแชทัม", "เวลาออมแสงแชทัม"),
        null));

      put("Chile", new TimeZoneNames("Chile", 
        new TimeZoneNames.Name("เวลาชิลี", "เวลามาตรฐานชิลี", "เวลาฤดูร้อนชิลี"),
        null));

      put("China", new TimeZoneNames("China", 
        new TimeZoneNames.Name("เวลาจีน", "เวลามาตรฐานจีน", "เวลาออมแสงจีน"),
        null));

      put("Choibalsan", new TimeZoneNames("Choibalsan", 
        new TimeZoneNames.Name("เวลาชอยปาลชาน", "เวลามาตรฐานชอยปาลชาน", "เวลาฤดูร้อนชอยปาลชาน"),
        null));

      put("Christmas", new TimeZoneNames("Christmas", 
        new TimeZoneNames.Name(null, "เวลาเกาะคริสต์มาส", null),
        null));

      put("Cocos", new TimeZoneNames("Cocos", 
        new TimeZoneNames.Name(null, "เวลาหมู่เกาะโคโคส", null),
        null));

      put("Colombia", new TimeZoneNames("Colombia", 
        new TimeZoneNames.Name("เวลาโคลอมเบีย", "เวลามาตรฐานโคลอมเบีย", "เวลาฤดูร้อนโคลอมเบีย"),
        null));

      put("Cook", new TimeZoneNames("Cook", 
        new TimeZoneNames.Name("เวลาหมู่เกาะคุก", "เวลามาตรฐานหมู่เกาะคุก", "เวลาครึ่งฤดูร้อนหมู่เกาะคุก"),
        null));

      put("Cuba", new TimeZoneNames("Cuba", 
        new TimeZoneNames.Name("เวลาคิวบา", "เวลามาตรฐานคิวบา", "เวลาออมแสงของคิวบา"),
        null));

      put("Davis", new TimeZoneNames("Davis", 
        new TimeZoneNames.Name(null, "เวลาเดวิส", null),
        null));

      put("DumontDUrville", new TimeZoneNames("DumontDUrville", 
        new TimeZoneNames.Name(null, "เวลาดูมองต์ดูร์วิลล์", null),
        null));

      put("East_Timor", new TimeZoneNames("East_Timor", 
        new TimeZoneNames.Name(null, "เวลาติมอร์ตะวันออก", null),
        null));

      put("Easter", new TimeZoneNames("Easter", 
        new TimeZoneNames.Name("เวลาเกาะอีสเตอร์", "เวลามาตรฐานเกาะอีสเตอร์", "เวลาฤดูร้อนเกาะอีสเตอร์"),
        null));

      put("Ecuador", new TimeZoneNames("Ecuador", 
        new TimeZoneNames.Name(null, "เวลาเอกวาดอร์", null),
        null));

      put("Europe_Central", new TimeZoneNames("Europe_Central", 
        new TimeZoneNames.Name("เวลายุโรปกลาง", "เวลามาตรฐานยุโรปกลาง", "เวลาฤดูร้อนยุโรปกลาง"),
        null));

      put("Europe_Eastern", new TimeZoneNames("Europe_Eastern", 
        new TimeZoneNames.Name("เวลายุโรปตะวันออก", "เวลามาตรฐานยุโรปตะวันออก", "เวลาฤดูร้อนยุโรปตะวันออก"),
        null));

      put("Europe_Further_Eastern", new TimeZoneNames("Europe_Further_Eastern", 
        new TimeZoneNames.Name(null, "เวลายุโรปตะวันออกไกล", null),
        null));

      put("Europe_Western", new TimeZoneNames("Europe_Western", 
        new TimeZoneNames.Name("เวลายุโรปตะวันตก", "เวลามาตรฐานยุโรปตะวันตก", "เวลาฤดูร้อนยุโรปตะวันตก"),
        null));

      put("Falkland", new TimeZoneNames("Falkland", 
        new TimeZoneNames.Name("เวลาหมู่เกาะฟอล์กแลนด์", "เวลามาตรฐานหมู่เกาะฟอล์กแลนด์", "เวลาฤดูร้อนหมู่เกาะฟอล์กแลนด์"),
        null));

      put("Fiji", new TimeZoneNames("Fiji", 
        new TimeZoneNames.Name("เวลาฟิจิ", "เวลามาตรฐานฟิจิ", "เวลาฤดูร้อนฟิจิ"),
        null));

      put("French_Guiana", new TimeZoneNames("French_Guiana", 
        new TimeZoneNames.Name(null, "เวลาเฟรนช์เกียนา", null),
        null));

      put("French_Southern", new TimeZoneNames("French_Southern", 
        new TimeZoneNames.Name(null, "เวลาเฟรนช์เซาเทิร์นและแอนตาร์กติก", null),
        null));

      put("Galapagos", new TimeZoneNames("Galapagos", 
        new TimeZoneNames.Name(null, "เวลากาลาปาโกส", null),
        null));

      put("Gambier", new TimeZoneNames("Gambier", 
        new TimeZoneNames.Name(null, "เวลาแกมเบียร์", null),
        null));

      put("Georgia", new TimeZoneNames("Georgia", 
        new TimeZoneNames.Name("เวลาจอร์เจีย", "เวลามาตรฐานจอร์เจีย", "เวลาฤดูร้อนจอร์เจีย"),
        null));

      put("Gilbert_Islands", new TimeZoneNames("Gilbert_Islands", 
        new TimeZoneNames.Name(null, "เวลาหมู่เกาะกิลเบิร์ต", null),
        null));

      put("GMT", new TimeZoneNames("GMT", 
        new TimeZoneNames.Name(null, "เวลามาตรฐานกรีนิช", null),
        null));

      put("Greenland_Eastern", new TimeZoneNames("Greenland_Eastern", 
        new TimeZoneNames.Name("เวลากรีนแลนด์ตะวันออก", "เวลามาตรฐานกรีนแลนด์ตะวันออก", "เวลาฤดูร้อนกรีนแลนด์ตะวันออก"),
        null));

      put("Greenland_Western", new TimeZoneNames("Greenland_Western", 
        new TimeZoneNames.Name("เวลากรีนแลนด์ตะวันตก", "เวลามาตรฐานกรีนแลนด์ตะวันตก", "เวลาฤดูร้อนกรีนแลนด์ตะวันตก"),
        null));

      put("Guam", new TimeZoneNames("Guam", 
        new TimeZoneNames.Name(null, "เวลากวม", null),
        null));

      put("Gulf", new TimeZoneNames("Gulf", 
        new TimeZoneNames.Name(null, "เวลากัลฟ์", null),
        null));

      put("Guyana", new TimeZoneNames("Guyana", 
        new TimeZoneNames.Name(null, "เวลากายอานา", null),
        null));

      put("Hawaii_Aleutian", new TimeZoneNames("Hawaii_Aleutian", 
        new TimeZoneNames.Name("เวลาฮาวาย-อะลูเชียน", "เวลามาตรฐานฮาวาย-อะลูเชียน", "เวลาออมแสงฮาวาย-อะลูเชียน"),
        null));

      put("Hong_Kong", new TimeZoneNames("Hong_Kong", 
        new TimeZoneNames.Name("เวลาฮ่องกง", "เวลามาตรฐานฮ่องกง", "เวลาฤดูร้อนฮ่องกง"),
        null));

      put("Hovd", new TimeZoneNames("Hovd", 
        new TimeZoneNames.Name("เวลาฮอฟด์", "เวลามาตรฐานฮอฟด์", "เวลาฤดูร้อนฮอฟด์"),
        null));

      put("India", new TimeZoneNames("India", 
        new TimeZoneNames.Name(null, "เวลาอินเดีย", null),
        null));

      put("Indian_Ocean", new TimeZoneNames("Indian_Ocean", 
        new TimeZoneNames.Name(null, "เวลามหาสมุทรอินเดีย", null),
        null));

      put("Indochina", new TimeZoneNames("Indochina", 
        new TimeZoneNames.Name(null, "เวลาอินโดจีน", null),
        null));

      put("Indonesia_Central", new TimeZoneNames("Indonesia_Central", 
        new TimeZoneNames.Name(null, "เวลาอินโดนีเซียตอนกลาง", null),
        null));

      put("Indonesia_Eastern", new TimeZoneNames("Indonesia_Eastern", 
        new TimeZoneNames.Name(null, "เวลาอินโดนีเซียฝั่งตะวันออก", null),
        null));

      put("Indonesia_Western", new TimeZoneNames("Indonesia_Western", 
        new TimeZoneNames.Name(null, "เวลาอินโดนีเซียฝั่งตะวันตก", null),
        null));

      put("Iran", new TimeZoneNames("Iran", 
        new TimeZoneNames.Name("เวลาอิหร่าน", "เวลามาตรฐานอิหร่าน", "เวลาออมแสงอิหร่าน"),
        null));

      put("Irkutsk", new TimeZoneNames("Irkutsk", 
        new TimeZoneNames.Name("เวลาอีร์คุตสค์", "เวลามาตรฐานอีร์คุตสค์", "เวลาฤดูร้อนอีร์คุตสค์"),
        null));

      put("Israel", new TimeZoneNames("Israel", 
        new TimeZoneNames.Name("เวลาอิสราเอล", "เวลามาตรฐานอิสราเอล", "เวลาออมแสงอิสราเอล"),
        null));

      put("Japan", new TimeZoneNames("Japan", 
        new TimeZoneNames.Name("เวลาญี่ปุ่น", "เวลามาตรฐานญี่ปุ่น", "เวลาออมแสงญี่ปุ่น"),
        null));

      put("Kamchatka", new TimeZoneNames("Kamchatka", 
        new TimeZoneNames.Name("เวลาคัมชัตคา", "เวลาเปโตรปัฟลอฟสค์-คัมชัตสกี", "เวลาฤดูร้อนเปโตรปัฟลอฟสค์-คัมชัตสกี"),
        null));

      put("Kazakhstan_Eastern", new TimeZoneNames("Kazakhstan_Eastern", 
        new TimeZoneNames.Name(null, "เวลาคาซัคสถานตะวันออก", null),
        null));

      put("Kazakhstan_Western", new TimeZoneNames("Kazakhstan_Western", 
        new TimeZoneNames.Name(null, "เวลาคาซัคสถานตะวันตก", null),
        null));

      put("Korea", new TimeZoneNames("Korea", 
        new TimeZoneNames.Name("เวลาเกาหลี", "เวลามาตรฐานเกาหลี", "เวลาออมแสงเกาหลี"),
        null));

      put("Kosrae", new TimeZoneNames("Kosrae", 
        new TimeZoneNames.Name(null, "เวลาคอสไร", null),
        null));

      put("Krasnoyarsk", new TimeZoneNames("Krasnoyarsk", 
        new TimeZoneNames.Name("เวลาครัสโนยาสค์", "เวลามาตรฐานครัสโนยาสค์", "เวลาฤดูร้อนครัสโนยาสค์"),
        null));

      put("Kyrgystan", new TimeZoneNames("Kyrgystan", 
        new TimeZoneNames.Name(null, "เวลาคีร์กีซสถาน", null),
        null));

      put("Lanka", new TimeZoneNames("Lanka", 
        new TimeZoneNames.Name(null, "เวลาลังกา", null),
        null));

      put("Line_Islands", new TimeZoneNames("Line_Islands", 
        new TimeZoneNames.Name(null, "เวลาหมู่เกาะไลน์", null),
        null));

      put("Lord_Howe", new TimeZoneNames("Lord_Howe", 
        new TimeZoneNames.Name("เวลาลอร์ดโฮว์", "เวลามาตรฐานลอร์ดโฮว์", "เวลาออมแสงลอร์ดโฮว์"),
        null));

      put("Macau", new TimeZoneNames("Macau", 
        new TimeZoneNames.Name("เวลามาเก๊า", "เวลามาตรฐานมาเก๊า", "เวลาฤดูร้อนมาเก๊า"),
        null));

      put("Macquarie", new TimeZoneNames("Macquarie", 
        new TimeZoneNames.Name(null, "เวลาเกาะแมกควอรี", null),
        null));

      put("Magadan", new TimeZoneNames("Magadan", 
        new TimeZoneNames.Name("เวลามากาดาน", "เวลามาตรฐานมากาดาน", "เวลาฤดูร้อนมากาดาน"),
        null));

      put("Malaysia", new TimeZoneNames("Malaysia", 
        new TimeZoneNames.Name(null, "เวลามาเลเซีย", null),
        null));

      put("Maldives", new TimeZoneNames("Maldives", 
        new TimeZoneNames.Name(null, "เวลามัลดีฟส์", null),
        null));

      put("Marquesas", new TimeZoneNames("Marquesas", 
        new TimeZoneNames.Name(null, "เวลามาร์เคซัส", null),
        null));

      put("Marshall_Islands", new TimeZoneNames("Marshall_Islands", 
        new TimeZoneNames.Name(null, "เวลาหมู่เกาะมาร์แชลล์", null),
        null));

      put("Mauritius", new TimeZoneNames("Mauritius", 
        new TimeZoneNames.Name("เวลามอริเชียส", "เวลามาตรฐานมอริเชียส", "เวลาฤดูร้อนของมอริเชียส"),
        null));

      put("Mawson", new TimeZoneNames("Mawson", 
        new TimeZoneNames.Name(null, "เวลามอว์สัน", null),
        null));

      put("Mexico_Northwest", new TimeZoneNames("Mexico_Northwest", 
        new TimeZoneNames.Name("เวลาเม็กซิโกตะวันตกเฉียงเหนือ", "เวลามาตรฐานเม็กซิโกตะวันตกเฉียงเหนือ", "เวลาออมแสงเม็กซิโกตะวันตกเฉียงเหนือ"),
        null));

      put("Mexico_Pacific", new TimeZoneNames("Mexico_Pacific", 
        new TimeZoneNames.Name("เวลาแปซิฟิกเม็กซิโก", "เวลามาตรฐานแปซิฟิกเม็กซิโก", "เวลาออมแสงแปซิฟิกเม็กซิโก"),
        null));

      put("Mongolia", new TimeZoneNames("Mongolia", 
        new TimeZoneNames.Name("เวลาอูลานบาตอร์", "เวลามาตรฐานอูลานบาตอร์", "เวลาฤดูร้อนอูลานบาตอร์"),
        null));

      put("Moscow", new TimeZoneNames("Moscow", 
        new TimeZoneNames.Name("เวลามอสโก", "เวลามาตรฐานมอสโก", "เวลาฤดูร้อนมอสโก"),
        null));

      put("Myanmar", new TimeZoneNames("Myanmar", 
        new TimeZoneNames.Name(null, "เวลาพม่า", null),
        null));

      put("Nauru", new TimeZoneNames("Nauru", 
        new TimeZoneNames.Name(null, "เวลานาอูรู", null),
        null));

      put("Nepal", new TimeZoneNames("Nepal", 
        new TimeZoneNames.Name(null, "เวลาเนปาล", null),
        null));

      put("New_Caledonia", new TimeZoneNames("New_Caledonia", 
        new TimeZoneNames.Name("เวลานิวแคลิโดเนีย", "เวลามาตรฐานนิวแคลิโดเนีย", "เวลาฤดูร้อนนิวแคลิโดเนีย"),
        null));

      put("New_Zealand", new TimeZoneNames("New_Zealand", 
        new TimeZoneNames.Name("เวลานิวซีแลนด์", "เวลามาตรฐานนิวซีแลนด์", "เวลาออมแสงนิวซีแลนด์"),
        null));

      put("Newfoundland", new TimeZoneNames("Newfoundland", 
        new TimeZoneNames.Name("เวลานิวฟันด์แลนด์", "เวลามาตรฐานนิวฟันด์แลนด์", "เวลาออมแสงนิวฟันด์แลนด์"),
        null));

      put("Niue", new TimeZoneNames("Niue", 
        new TimeZoneNames.Name(null, "เวลานีอูเอ", null),
        null));

      put("Norfolk", new TimeZoneNames("Norfolk", 
        new TimeZoneNames.Name(null, "เวลาเกาะนอร์ฟอล์ก", null),
        null));

      put("Noronha", new TimeZoneNames("Noronha", 
        new TimeZoneNames.Name("เวลาหมู่เกาะเฟอร์นันโด", "เวลามาตรฐานหมู่เกาะเฟอร์นันโด", "เวลาฤดูร้อนของหมู่เกาะเฟอร์นันโด"),
        null));

      put("North_Mariana", new TimeZoneNames("North_Mariana", 
        new TimeZoneNames.Name(null, "เวลาหมู่เกาะมาเรียนาเหนือ", null),
        null));

      put("Novosibirsk", new TimeZoneNames("Novosibirsk", 
        new TimeZoneNames.Name("เวลาโนโวซีบีสค์", "เวลามาตรฐานโนโวซีบีสค์", "เวลาฤดูร้อนโนโวซีบีสค์"),
        null));

      put("Omsk", new TimeZoneNames("Omsk", 
        new TimeZoneNames.Name("เวลาออมสค์", "เวลามาตรฐานออมสค์", "เวลาฤดูร้อนออมสค์"),
        null));

      put("Pakistan", new TimeZoneNames("Pakistan", 
        new TimeZoneNames.Name("เวลาปากีสถาน", "เวลามาตรฐานปากีสถาน", "เวลาฤดูร้อนปากีสถาน"),
        null));

      put("Palau", new TimeZoneNames("Palau", 
        new TimeZoneNames.Name(null, "เวลาปาเลา", null),
        null));

      put("Papua_New_Guinea", new TimeZoneNames("Papua_New_Guinea", 
        new TimeZoneNames.Name(null, "เวลาปาปัวนิวกินี", null),
        null));

      put("Paraguay", new TimeZoneNames("Paraguay", 
        new TimeZoneNames.Name("เวลาปารากวัย", "เวลามาตรฐานปารากวัย", "เวลาฤดูร้อนปารากวัย"),
        null));

      put("Peru", new TimeZoneNames("Peru", 
        new TimeZoneNames.Name("เวลาเปรู", "เวลามาตรฐานเปรู", "เวลาฤดูร้อนเปรู"),
        null));

      put("Philippines", new TimeZoneNames("Philippines", 
        new TimeZoneNames.Name("เวลาฟิลิปปินส์", "เวลามาตรฐานฟิลิปปินส์", "เวลาฤดูร้อนฟิลิปปินส์"),
        null));

      put("Phoenix_Islands", new TimeZoneNames("Phoenix_Islands", 
        new TimeZoneNames.Name(null, "เวลาหมู่เกาะฟินิกซ์", null),
        null));

      put("Pierre_Miquelon", new TimeZoneNames("Pierre_Miquelon", 
        new TimeZoneNames.Name("เวลาแซงปีแยร์และมีเกอลง", "เวลามาตรฐานแซงปีแยร์และมีเกอลง", "เวลาออมแสงของแซงปีแยร์และมีเกอลง"),
        null));

      put("Pitcairn", new TimeZoneNames("Pitcairn", 
        new TimeZoneNames.Name(null, "เวลาพิตแคร์น", null),
        null));

      put("Ponape", new TimeZoneNames("Ponape", 
        new TimeZoneNames.Name(null, "เวลาโปนาเป", null),
        null));

      put("Pyongyang", new TimeZoneNames("Pyongyang", 
        new TimeZoneNames.Name(null, "เวลาเปียงยาง", null),
        null));

      put("Qyzylorda", new TimeZoneNames("Qyzylorda", 
        new TimeZoneNames.Name("เวลาคืยซิลออร์ดา", "เวลามาตรฐานคืยซิลออร์ดา", "เวลาฤดูร้อนคืยซิลออร์ดา"),
        null));

      put("Reunion", new TimeZoneNames("Reunion", 
        new TimeZoneNames.Name(null, "เวลาเรอูนียง", null),
        null));

      put("Rothera", new TimeZoneNames("Rothera", 
        new TimeZoneNames.Name(null, "เวลาโรธีรา", null),
        null));

      put("Sakhalin", new TimeZoneNames("Sakhalin", 
        new TimeZoneNames.Name("เวลาซาคาลิน", "เวลามาตรฐานซาคาลิน", "เวลาฤดูร้อนซาคาลิน"),
        null));

      put("Samara", new TimeZoneNames("Samara", 
        new TimeZoneNames.Name("เวลาซามารา", "เวลามาตรฐานซามารา", "เวลาฤดูร้อนซามารา"),
        null));

      put("Samoa", new TimeZoneNames("Samoa", 
        new TimeZoneNames.Name("เวลาซามัว", "เวลามาตรฐานซามัว", "เวลาฤดูร้อนซามัว"),
        null));

      put("Seychelles", new TimeZoneNames("Seychelles", 
        new TimeZoneNames.Name(null, "เวลาเซเชลส์", null),
        null));

      put("Singapore", new TimeZoneNames("Singapore", 
        new TimeZoneNames.Name(null, "เวลาสิงคโปร์", null),
        null));

      put("Solomon", new TimeZoneNames("Solomon", 
        new TimeZoneNames.Name(null, "เวลาหมู่เกาะโซโลมอน", null),
        null));

      put("South_Georgia", new TimeZoneNames("South_Georgia", 
        new TimeZoneNames.Name(null, "เวลาเซาท์จอร์เจีย", null),
        null));

      put("Suriname", new TimeZoneNames("Suriname", 
        new TimeZoneNames.Name(null, "เวลาซูรินาเม", null),
        null));

      put("Syowa", new TimeZoneNames("Syowa", 
        new TimeZoneNames.Name(null, "เวลาไซโยวา", null),
        null));

      put("Tahiti", new TimeZoneNames("Tahiti", 
        new TimeZoneNames.Name(null, "เวลาตาฮีตี", null),
        null));

      put("Taipei", new TimeZoneNames("Taipei", 
        new TimeZoneNames.Name("เวลาไทเป", "เวลามาตรฐานไทเป", "เวลาออมแสงไทเป"),
        null));

      put("Tajikistan", new TimeZoneNames("Tajikistan", 
        new TimeZoneNames.Name(null, "เวลาทาจิกิสถาน", null),
        null));

      put("Tokelau", new TimeZoneNames("Tokelau", 
        new TimeZoneNames.Name(null, "เวลาโตเกเลา", null),
        null));

      put("Tonga", new TimeZoneNames("Tonga", 
        new TimeZoneNames.Name("เวลาตองกา", "เวลามาตรฐานตองกา", "เวลาฤดูร้อนตองกา"),
        null));

      put("Truk", new TimeZoneNames("Truk", 
        new TimeZoneNames.Name(null, "เวลาชุก", null),
        null));

      put("Turkmenistan", new TimeZoneNames("Turkmenistan", 
        new TimeZoneNames.Name("เวลาเติร์กเมนิสถาน", "เวลามาตรฐานเติร์กเมนิสถาน", "เวลาฤดูร้อนเติร์กเมนิสถาน"),
        null));

      put("Tuvalu", new TimeZoneNames("Tuvalu", 
        new TimeZoneNames.Name(null, "เวลาตูวาลู", null),
        null));

      put("Uruguay", new TimeZoneNames("Uruguay", 
        new TimeZoneNames.Name("เวลาอุรุกวัย", "เวลามาตรฐานอุรุกวัย", "เวลาฤดูร้อนอุรุกวัย"),
        null));

      put("Uzbekistan", new TimeZoneNames("Uzbekistan", 
        new TimeZoneNames.Name("เวลาอุซเบกิสถาน", "เวลามาตรฐานอุซเบกิสถาน", "เวลาฤดูร้อนอุซเบกิสถาน"),
        null));

      put("Vanuatu", new TimeZoneNames("Vanuatu", 
        new TimeZoneNames.Name("เวลาวานูอาตู", "เวลามาตรฐานวานูอาตู", "เวลาฤดูร้อนวานูอาตู"),
        null));

      put("Venezuela", new TimeZoneNames("Venezuela", 
        new TimeZoneNames.Name(null, "เวลาเวเนซุเอลา", null),
        null));

      put("Vladivostok", new TimeZoneNames("Vladivostok", 
        new TimeZoneNames.Name("เวลาวลาดีวอสตอค", "เวลามาตรฐานวลาดีวอสตอค", "เวลาฤดูร้อนวลาดีวอสตอค"),
        null));

      put("Volgograd", new TimeZoneNames("Volgograd", 
        new TimeZoneNames.Name("เวลาวอลโกกราด", "เวลามาตรฐานวอลโกกราด", "เวลาฤดูร้อนวอลโกกราด"),
        null));

      put("Vostok", new TimeZoneNames("Vostok", 
        new TimeZoneNames.Name(null, "เวลาวอสตอค", null),
        null));

      put("Wake", new TimeZoneNames("Wake", 
        new TimeZoneNames.Name(null, "เวลาเกาะเวก", null),
        null));

      put("Wallis", new TimeZoneNames("Wallis", 
        new TimeZoneNames.Name(null, "เวลาวาลลิสและฟุตูนา", null),
        null));

      put("Yakutsk", new TimeZoneNames("Yakutsk", 
        new TimeZoneNames.Name("เวลายาคุตสค์", "เวลามาตรฐานยาคุตสค์", "เวลาฤดูร้อนยาคุตสค์"),
        null));

      put("Yekaterinburg", new TimeZoneNames("Yekaterinburg", 
        new TimeZoneNames.Name("เวลาเยคาเตรินบูร์ก", "เวลามาตรฐานเยคาเตรินบูร์ก", "เวลาฤดูร้อนเยคาเตรินบูร์ก"),
        null));
    } };
  }

  @Override
  public void formatDate(CalendarFormat type, ZonedDateTime d, StringBuilder b) {
    if (type == null) {
      return;
    }
    switch (type) {
      case SHORT: {
        // "d/M/yy"
        formatField(d, 'd', 1, b);
        b.append("/");
        formatField(d, 'M', 1, b);
        b.append("/");
        formatField(d, 'y', 2, b);
        break;
      }
      case MEDIUM: {
        // "d MMM y"
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 3, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case LONG: {
        // "d MMMM G y"
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 4, b);
        b.append(" ");
        formatField(d, 'G', 1, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case FULL: {
        // "EEEEที่ d MMMM G y"
        formatField(d, 'E', 4, b);
        b.append("ที่ ");
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 4, b);
        b.append(" ");
        formatField(d, 'G', 1, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
    }
  }

  @Override
  public void formatTime(CalendarFormat type, ZonedDateTime d, StringBuilder b) {
    if (type == null) {
      return;
    }
    switch (type) {
      case SHORT: {
        // "HH:mm"
        formatField(d, 'H', 2, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        break;
      }
      case MEDIUM: {
        // "HH:mm:ss"
        formatField(d, 'H', 2, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        b.append(":");
        formatField(d, 's', 2, b);
        break;
      }
      case LONG: {
        // "H นาฬิกา mm นาที ss วินาที z"
        formatField(d, 'H', 1, b);
        b.append(" นาฬิกา ");
        formatField(d, 'm', 2, b);
        b.append(" นาที ");
        formatField(d, 's', 2, b);
        b.append(" วินาที ");
        formatField(d, 'z', 1, b);
        break;
      }
      case FULL: {
        // "H นาฬิกา mm นาที ss วินาที zzzz"
        formatField(d, 'H', 1, b);
        b.append(" นาฬิกา ");
        formatField(d, 'm', 2, b);
        b.append(" นาที ");
        formatField(d, 's', 2, b);
        b.append(" วินาที ");
        formatField(d, 'z', 4, b);
        break;
      }
    }
  }

  @Override
  public void formatWrapped(CalendarFormat wrapperType, CalendarFormat dateType,
      CalendarFormat timeType, String dateSkel, String timeSkel, ZonedDateTime d, StringBuilder b) {
    switch (wrapperType) {
      case SHORT:
      case MEDIUM:
      case LONG:
      case FULL:
       {
        // "{1} {0}"
        if (dateType != null) {
          formatDate(dateType, d, b);
        } else {
          formatSkeleton(dateSkel, d, b);
        }
        b.append(" ");
        if (timeType != null) {
          formatTime(timeType, d, b);
        } else {
          formatSkeleton(timeSkel, d, b);
        }
        break;
      }
    }
  }

  @Override
  public boolean formatSkeleton(String skeleton, ZonedDateTime d, StringBuilder b) {
    if (skeleton == null) {
      return false;
    }
    switch (skeleton) {
      case "d": {
        // Pattern: "d"
        formatField(d, 'd', 1, b);
        break;
      }
      case "E": {
        // Pattern: "ccc"
        formatField(d, 'c', 3, b);
        break;
      }
      case "Ed": {
        // Pattern: "E d"
        formatField(d, 'E', 1, b);
        b.append(" ");
        formatField(d, 'd', 1, b);
        break;
      }
      case "Ehm": {
        // Pattern: "E h:mm a"
        formatField(d, 'E', 1, b);
        b.append(" ");
        formatField(d, 'h', 1, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        b.append(" ");
        formatField(d, 'a', 1, b);
        break;
      }
      case "EHm": {
        // Pattern: "E HH:mm น."
        formatField(d, 'E', 1, b);
        b.append(" ");
        formatField(d, 'H', 2, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        b.append(" น.");
        break;
      }
      case "Ehms": {
        // Pattern: "E h:mm:ss a"
        formatField(d, 'E', 1, b);
        b.append(" ");
        formatField(d, 'h', 1, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        b.append(":");
        formatField(d, 's', 2, b);
        b.append(" ");
        formatField(d, 'a', 1, b);
        break;
      }
      case "EHms": {
        // Pattern: "E HH:mm:ss"
        formatField(d, 'E', 1, b);
        b.append(" ");
        formatField(d, 'H', 2, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        b.append(":");
        formatField(d, 's', 2, b);
        break;
      }
      case "Gy": {
        // Pattern: "G y"
        formatField(d, 'G', 1, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "GyMMM": {
        // Pattern: "MMM G y"
        formatField(d, 'M', 3, b);
        b.append(" ");
        formatField(d, 'G', 1, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "GyMMMd": {
        // Pattern: "d MMM G y"
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 3, b);
        b.append(" ");
        formatField(d, 'G', 1, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "GyMMMEd": {
        // Pattern: "E d MMM G y"
        formatField(d, 'E', 1, b);
        b.append(" ");
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 3, b);
        b.append(" ");
        formatField(d, 'G', 1, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "GyMMMEEEEd": {
        // Pattern: "EEEEที่ d MMM G y"
        formatField(d, 'E', 4, b);
        b.append("ที่ ");
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 3, b);
        b.append(" ");
        formatField(d, 'G', 1, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "h": {
        // Pattern: "h a"
        formatField(d, 'h', 1, b);
        b.append(" ");
        formatField(d, 'a', 1, b);
        break;
      }
      case "H": {
        // Pattern: "HH"
        formatField(d, 'H', 2, b);
        break;
      }
      case "hm": {
        // Pattern: "h:mm a"
        formatField(d, 'h', 1, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        b.append(" ");
        formatField(d, 'a', 1, b);
        break;
      }
      case "Hm": {
        // Pattern: "HH:mm น."
        formatField(d, 'H', 2, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        b.append(" น.");
        break;
      }
      case "hms": {
        // Pattern: "h:mm:ss a"
        formatField(d, 'h', 1, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        b.append(":");
        formatField(d, 's', 2, b);
        b.append(" ");
        formatField(d, 'a', 1, b);
        break;
      }
      case "Hms": {
        // Pattern: "HH:mm:ss"
        formatField(d, 'H', 2, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        b.append(":");
        formatField(d, 's', 2, b);
        break;
      }
      case "hmsv": {
        // Pattern: "h:mm:ss a v"
        formatField(d, 'h', 1, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        b.append(":");
        formatField(d, 's', 2, b);
        b.append(" ");
        formatField(d, 'a', 1, b);
        b.append(" ");
        formatField(d, 'v', 1, b);
        break;
      }
      case "Hmsv": {
        // Pattern: "HH:mm:ss v"
        formatField(d, 'H', 2, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        b.append(":");
        formatField(d, 's', 2, b);
        b.append(" ");
        formatField(d, 'v', 1, b);
        break;
      }
      case "hmv": {
        // Pattern: "h:mm a v"
        formatField(d, 'h', 1, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        b.append(" ");
        formatField(d, 'a', 1, b);
        b.append(" ");
        formatField(d, 'v', 1, b);
        break;
      }
      case "Hmv": {
        // Pattern: "HH:mm v"
        formatField(d, 'H', 2, b);
        b.append(":");
        formatField(d, 'm', 2, b);
        b.append(" ");
        formatField(d, 'v', 1, b);
        break;
      }
      case "M": {
        // Pattern: "L"
        formatField(d, 'L', 1, b);
        break;
      }
      case "Md": {
        // Pattern: "d/M"
        formatField(d, 'd', 1, b);
        b.append("/");
        formatField(d, 'M', 1, b);
        break;
      }
      case "MEd": {
        // Pattern: "E d/M"
        formatField(d, 'E', 1, b);
        b.append(" ");
        formatField(d, 'd', 1, b);
        b.append("/");
        formatField(d, 'M', 1, b);
        break;
      }
      case "MMM": {
        // Pattern: "LLL"
        formatField(d, 'L', 3, b);
        break;
      }
      case "MMMd": {
        // Pattern: "d MMM"
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 3, b);
        break;
      }
      case "MMMEd": {
        // Pattern: "E d MMM"
        formatField(d, 'E', 1, b);
        b.append(" ");
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 3, b);
        break;
      }
      case "MMMEEEEd": {
        // Pattern: "EEEEที่ d MMM"
        formatField(d, 'E', 4, b);
        b.append("ที่ ");
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 3, b);
        break;
      }
      case "MMMMd": {
        // Pattern: "d MMMM"
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 4, b);
        break;
      }
      case "MMMMEd": {
        // Pattern: "E d MMMM"
        formatField(d, 'E', 1, b);
        b.append(" ");
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 4, b);
        break;
      }
      case "MMMMEEEEd": {
        // Pattern: "EEEEที่ d MMMM"
        formatField(d, 'E', 4, b);
        b.append("ที่ ");
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 4, b);
        break;
      }
      case "MMMMW-count-other": {
        // Pattern: "สัปดาห์ที่ W ของ MMM"
        b.append("สัปดาห์ที่ ");
        formatField(d, 'W', 1, b);
        b.append(" ของ ");
        formatField(d, 'M', 3, b);
        break;
      }
      case "mmss": {
        // Pattern: "mm:ss"
        formatField(d, 'm', 2, b);
        b.append(":");
        formatField(d, 's', 2, b);
        break;
      }
      case "ms": {
        // Pattern: "mm:ss"
        formatField(d, 'm', 2, b);
        b.append(":");
        formatField(d, 's', 2, b);
        break;
      }
      case "y": {
        // Pattern: "y"
        formatField(d, 'y', 1, b);
        break;
      }
      case "yM": {
        // Pattern: "M/y"
        formatField(d, 'M', 1, b);
        b.append("/");
        formatField(d, 'y', 1, b);
        break;
      }
      case "yMd": {
        // Pattern: "d/M/y"
        formatField(d, 'd', 1, b);
        b.append("/");
        formatField(d, 'M', 1, b);
        b.append("/");
        formatField(d, 'y', 1, b);
        break;
      }
      case "yMEd": {
        // Pattern: "E d/M/y"
        formatField(d, 'E', 1, b);
        b.append(" ");
        formatField(d, 'd', 1, b);
        b.append("/");
        formatField(d, 'M', 1, b);
        b.append("/");
        formatField(d, 'y', 1, b);
        break;
      }
      case "yMMM": {
        // Pattern: "MMM y"
        formatField(d, 'M', 3, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "yMMMd": {
        // Pattern: "d MMM y"
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 3, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "yMMMEd": {
        // Pattern: "E d MMM y"
        formatField(d, 'E', 1, b);
        b.append(" ");
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 3, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "yMMMEEEEd": {
        // Pattern: "EEEEที่ d MMM y"
        formatField(d, 'E', 4, b);
        b.append("ที่ ");
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 3, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "yMMMM": {
        // Pattern: "MMMM G y"
        formatField(d, 'M', 4, b);
        b.append(" ");
        formatField(d, 'G', 1, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "yMMMMd": {
        // Pattern: "d MMMM G y"
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 4, b);
        b.append(" ");
        formatField(d, 'G', 1, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "yMMMMEd": {
        // Pattern: "E d MMMM G y"
        formatField(d, 'E', 1, b);
        b.append(" ");
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 4, b);
        b.append(" ");
        formatField(d, 'G', 1, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "yMMMMEEEEd": {
        // Pattern: "EEEEที่ d MMMM G y"
        formatField(d, 'E', 4, b);
        b.append("ที่ ");
        formatField(d, 'd', 1, b);
        b.append(" ");
        formatField(d, 'M', 4, b);
        b.append(" ");
        formatField(d, 'G', 1, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "yQQQ": {
        // Pattern: "QQQ y"
        formatField(d, 'Q', 3, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "yQQQQ": {
        // Pattern: "QQQQ G y"
        formatField(d, 'Q', 4, b);
        b.append(" ");
        formatField(d, 'G', 1, b);
        b.append(" ");
        formatField(d, 'y', 1, b);
        break;
      }
      case "yw-count-other": {
        // Pattern: "สัปดาห์ที่ w ของ y"
        b.append("สัปดาห์ที่ ");
        formatField(d, 'w', 1, b);
        b.append(" ของ ");
        formatField(d, 'y', 1, b);
        break;
      }
      default: {
        return false;
      }
    }
    return true;
  }

  @Override
  public void formatInterval(ZonedDateTime s, ZonedDateTime e, String k, DateTimeField f,
      StringBuilder b) {
    if (k != null && f != null) {
      switch (k) {
        case "hm": {
          switch (f) {
            case AM_PM: {
              // "h:mm a – "
              formatField(s, 'h', 1, b);
              b.append(":");
              formatField(s, 'm', 2, b);
              b.append(" ");
              formatField(s, 'a', 1, b);
              b.append(" – ");
              // "h:mm a"
              formatField(e, 'h', 1, b);
              b.append(":");
              formatField(e, 'm', 2, b);
              b.append(" ");
              formatField(e, 'a', 1, b);
              return;
            }
            case HOUR: {
              // "h:mm–"
              formatField(s, 'h', 1, b);
              b.append(":");
              formatField(s, 'm', 2, b);
              b.append("–");
              // "h:mm a"
              formatField(e, 'h', 1, b);
              b.append(":");
              formatField(e, 'm', 2, b);
              b.append(" ");
              formatField(e, 'a', 1, b);
              return;
            }
            case MINUTE: {
              // "h:mm–"
              formatField(s, 'h', 1, b);
              b.append(":");
              formatField(s, 'm', 2, b);
              b.append("–");
              // "h:mm a"
              formatField(e, 'h', 1, b);
              b.append(":");
              formatField(e, 'm', 2, b);
              b.append(" ");
              formatField(e, 'a', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "H": {
          switch (f) {
            case HOUR: {
              // "HH–"
              formatField(s, 'H', 2, b);
              b.append("–");
              // "HH"
              formatField(e, 'H', 2, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "yMMMEd": {
          switch (f) {
            case DAY: {
              // "E d MMM – "
              formatField(s, 'E', 1, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 3, b);
              b.append(" – ");
              // "E d MMM y"
              formatField(e, 'E', 1, b);
              b.append(" ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case YEAR: {
              // "E d MMM y – "
              formatField(s, 'E', 1, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 3, b);
              b.append(" ");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "E d MMM y"
              formatField(e, 'E', 1, b);
              b.append(" ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case MONTH: {
              // "E d MMM – "
              formatField(s, 'E', 1, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 3, b);
              b.append(" – ");
              // "E d MMM y"
              formatField(e, 'E', 1, b);
              b.append(" ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "yMEd": {
          switch (f) {
            case DAY: {
              // "E d/M/y – "
              formatField(s, 'E', 1, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append("/");
              formatField(s, 'M', 1, b);
              b.append("/");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "E d/M/y"
              formatField(e, 'E', 1, b);
              b.append(" ");
              formatField(e, 'd', 1, b);
              b.append("/");
              formatField(e, 'M', 1, b);
              b.append("/");
              formatField(e, 'y', 1, b);
              return;
            }
            case YEAR: {
              // "E d/M/y – "
              formatField(s, 'E', 1, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append("/");
              formatField(s, 'M', 1, b);
              b.append("/");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "E d/M/y"
              formatField(e, 'E', 1, b);
              b.append(" ");
              formatField(e, 'd', 1, b);
              b.append("/");
              formatField(e, 'M', 1, b);
              b.append("/");
              formatField(e, 'y', 1, b);
              return;
            }
            case MONTH: {
              // "E d/M/y – "
              formatField(s, 'E', 1, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append("/");
              formatField(s, 'M', 1, b);
              b.append("/");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "E d/M/y"
              formatField(e, 'E', 1, b);
              b.append(" ");
              formatField(e, 'd', 1, b);
              b.append("/");
              formatField(e, 'M', 1, b);
              b.append("/");
              formatField(e, 'y', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "M": {
          switch (f) {
            case MONTH: {
              // "M–"
              formatField(s, 'M', 1, b);
              b.append("–");
              // "M"
              formatField(e, 'M', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "MEd": {
          switch (f) {
            case DAY: {
              // "E d/M – "
              formatField(s, 'E', 1, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append("/");
              formatField(s, 'M', 1, b);
              b.append(" – ");
              // "E d/M/"
              formatField(e, 'E', 1, b);
              b.append(" ");
              formatField(e, 'd', 1, b);
              b.append("/");
              formatField(e, 'M', 1, b);
              b.append("/");
              return;
            }
            case MONTH: {
              // "E d/M – "
              formatField(s, 'E', 1, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append("/");
              formatField(s, 'M', 1, b);
              b.append(" – ");
              // "E d/M"
              formatField(e, 'E', 1, b);
              b.append(" ");
              formatField(e, 'd', 1, b);
              b.append("/");
              formatField(e, 'M', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "MMMEd": {
          switch (f) {
            case DAY: {
              // "E d – "
              formatField(s, 'E', 1, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append(" – ");
              // "E d MMM"
              formatField(e, 'E', 1, b);
              b.append(" ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              return;
            }
            case MONTH: {
              // "E d MMM – "
              formatField(s, 'E', 1, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 3, b);
              b.append(" – ");
              // "E d MMM"
              formatField(e, 'E', 1, b);
              b.append(" ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "hv": {
          switch (f) {
            case AM_PM: {
              // "h a – "
              formatField(s, 'h', 1, b);
              b.append(" ");
              formatField(s, 'a', 1, b);
              b.append(" – ");
              // "h a v"
              formatField(e, 'h', 1, b);
              b.append(" ");
              formatField(e, 'a', 1, b);
              b.append(" ");
              formatField(e, 'v', 1, b);
              return;
            }
            case HOUR: {
              // "h–"
              formatField(s, 'h', 1, b);
              b.append("–");
              // "h a v"
              formatField(e, 'h', 1, b);
              b.append(" ");
              formatField(e, 'a', 1, b);
              b.append(" ");
              formatField(e, 'v', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "hmv": {
          switch (f) {
            case AM_PM: {
              // "h:mm a – "
              formatField(s, 'h', 1, b);
              b.append(":");
              formatField(s, 'm', 2, b);
              b.append(" ");
              formatField(s, 'a', 1, b);
              b.append(" – ");
              // "h:mm a v"
              formatField(e, 'h', 1, b);
              b.append(":");
              formatField(e, 'm', 2, b);
              b.append(" ");
              formatField(e, 'a', 1, b);
              b.append(" ");
              formatField(e, 'v', 1, b);
              return;
            }
            case HOUR: {
              // "h:mm–"
              formatField(s, 'h', 1, b);
              b.append(":");
              formatField(s, 'm', 2, b);
              b.append("–");
              // "h:mm a v"
              formatField(e, 'h', 1, b);
              b.append(":");
              formatField(e, 'm', 2, b);
              b.append(" ");
              formatField(e, 'a', 1, b);
              b.append(" ");
              formatField(e, 'v', 1, b);
              return;
            }
            case MINUTE: {
              // "h:mm–"
              formatField(s, 'h', 1, b);
              b.append(":");
              formatField(s, 'm', 2, b);
              b.append("–");
              // "h:mm a v"
              formatField(e, 'h', 1, b);
              b.append(":");
              formatField(e, 'm', 2, b);
              b.append(" ");
              formatField(e, 'a', 1, b);
              b.append(" ");
              formatField(e, 'v', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "yMMMMd": {
          switch (f) {
            case DAY: {
              // "d–"
              formatField(s, 'd', 1, b);
              b.append("–");
              // "d MMMM G y"
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 4, b);
              b.append(" ");
              formatField(e, 'G', 1, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case YEAR: {
              // "d MMMM G y – "
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 4, b);
              b.append(" ");
              formatField(s, 'G', 1, b);
              b.append(" ");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "d MMMM y"
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 4, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case MONTH: {
              // "d MMMM – "
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 4, b);
              b.append(" – ");
              // "d MMMM G y"
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 4, b);
              b.append(" ");
              formatField(e, 'G', 1, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "yMMMMEEEEd": {
          switch (f) {
            case DAY: {
              // "EEEEที่ d – "
              formatField(s, 'E', 4, b);
              b.append("ที่ ");
              formatField(s, 'd', 1, b);
              b.append(" – ");
              // "EEEEที่ d MMMM G y"
              formatField(e, 'E', 4, b);
              b.append("ที่ ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 4, b);
              b.append(" ");
              formatField(e, 'G', 1, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case YEAR: {
              // "EEEEที่ d MMMM G y – "
              formatField(s, 'E', 4, b);
              b.append("ที่ ");
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 4, b);
              b.append(" ");
              formatField(s, 'G', 1, b);
              b.append(" ");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "EEEEที่ d MMMM y"
              formatField(e, 'E', 4, b);
              b.append("ที่ ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 4, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case MONTH: {
              // "EEEEที่ d MMMM – "
              formatField(s, 'E', 4, b);
              b.append("ที่ ");
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 4, b);
              b.append(" – ");
              // "EEEEที่ d MMMM G y"
              formatField(e, 'E', 4, b);
              b.append("ที่ ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 4, b);
              b.append(" ");
              formatField(e, 'G', 1, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "MMMEEEEd": {
          switch (f) {
            case DAY: {
              // "EEEEที่ d – "
              formatField(s, 'E', 4, b);
              b.append("ที่ ");
              formatField(s, 'd', 1, b);
              b.append(" – ");
              // "EEEEที่ d MMM"
              formatField(e, 'E', 4, b);
              b.append("ที่ ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              return;
            }
            case MONTH: {
              // "EEEEที่ d MMM – "
              formatField(s, 'E', 4, b);
              b.append("ที่ ");
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 3, b);
              b.append(" – ");
              // "EEEEที่ d MMM"
              formatField(e, 'E', 4, b);
              b.append("ที่ ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "yMMMd": {
          switch (f) {
            case DAY: {
              // "d–"
              formatField(s, 'd', 1, b);
              b.append("–");
              // "d MMM y"
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case YEAR: {
              // "d MMM y – "
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 3, b);
              b.append(" ");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "d MMM y"
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case MONTH: {
              // "d MMM – "
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 3, b);
              b.append(" – ");
              // "d MMM y"
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "yMMMMEd": {
          switch (f) {
            case DAY: {
              // "E d – "
              formatField(s, 'E', 1, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append(" – ");
              // "E d MMMM G y"
              formatField(e, 'E', 1, b);
              b.append(" ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 4, b);
              b.append(" ");
              formatField(e, 'G', 1, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case YEAR: {
              // "E d MMMM G y – "
              formatField(s, 'E', 1, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 4, b);
              b.append(" ");
              formatField(s, 'G', 1, b);
              b.append(" ");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "E d MMMM y"
              formatField(e, 'E', 1, b);
              b.append(" ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 4, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case MONTH: {
              // "E d MMMM – "
              formatField(s, 'E', 1, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 4, b);
              b.append(" – ");
              // "E d MMMM G y"
              formatField(e, 'E', 1, b);
              b.append(" ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 4, b);
              b.append(" ");
              formatField(e, 'G', 1, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "d": {
          switch (f) {
            case DAY: {
              // "d–"
              formatField(s, 'd', 1, b);
              b.append("–");
              // "d"
              formatField(e, 'd', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "Hm": {
          switch (f) {
            case HOUR: {
              // "HH:mm น. – "
              formatField(s, 'H', 2, b);
              b.append(":");
              formatField(s, 'm', 2, b);
              b.append(" น. – ");
              // "HH:mm น."
              formatField(e, 'H', 2, b);
              b.append(":");
              formatField(e, 'm', 2, b);
              b.append(" น.");
              return;
            }
            case MINUTE: {
              // "HH:mm น. – "
              formatField(s, 'H', 2, b);
              b.append(":");
              formatField(s, 'm', 2, b);
              b.append(" น. – ");
              // "HH:mm น."
              formatField(e, 'H', 2, b);
              b.append(":");
              formatField(e, 'm', 2, b);
              b.append(" น.");
              return;
            }
            default: break;
          }
          break;
        }
        case "h": {
          switch (f) {
            case AM_PM: {
              // "h a – "
              formatField(s, 'h', 1, b);
              b.append(" ");
              formatField(s, 'a', 1, b);
              b.append(" – ");
              // "h a"
              formatField(e, 'h', 1, b);
              b.append(" ");
              formatField(e, 'a', 1, b);
              return;
            }
            case HOUR: {
              // "h–"
              formatField(s, 'h', 1, b);
              b.append("–");
              // "h a"
              formatField(e, 'h', 1, b);
              b.append(" ");
              formatField(e, 'a', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "MMM": {
          switch (f) {
            case MONTH: {
              // "MMM – "
              formatField(s, 'M', 3, b);
              b.append(" – ");
              // "MMM"
              formatField(e, 'M', 3, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "yMMM": {
          switch (f) {
            case YEAR: {
              // "MMM y – "
              formatField(s, 'M', 3, b);
              b.append(" ");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "MMM y"
              formatField(e, 'M', 3, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case MONTH: {
              // "MMM–"
              formatField(s, 'M', 3, b);
              b.append("–");
              // "MMM y"
              formatField(e, 'M', 3, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "Hv": {
          switch (f) {
            case HOUR: {
              // "HH–"
              formatField(s, 'H', 2, b);
              b.append("–");
              // "HH v"
              formatField(e, 'H', 2, b);
              b.append(" ");
              formatField(e, 'v', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "Hmv": {
          switch (f) {
            case HOUR: {
              // "H:mm น. – "
              formatField(s, 'H', 1, b);
              b.append(":");
              formatField(s, 'm', 2, b);
              b.append(" น. – ");
              // "H:mm น. v"
              formatField(e, 'H', 1, b);
              b.append(":");
              formatField(e, 'm', 2, b);
              b.append(" น. ");
              formatField(e, 'v', 1, b);
              return;
            }
            case MINUTE: {
              // "H:mm น. – "
              formatField(s, 'H', 1, b);
              b.append(":");
              formatField(s, 'm', 2, b);
              b.append(" น. – ");
              // "H:mm น. v"
              formatField(e, 'H', 1, b);
              b.append(":");
              formatField(e, 'm', 2, b);
              b.append(" น. ");
              formatField(e, 'v', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "yMd": {
          switch (f) {
            case DAY: {
              // "d/M/y – "
              formatField(s, 'd', 1, b);
              b.append("/");
              formatField(s, 'M', 1, b);
              b.append("/");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "d/M/y"
              formatField(e, 'd', 1, b);
              b.append("/");
              formatField(e, 'M', 1, b);
              b.append("/");
              formatField(e, 'y', 1, b);
              return;
            }
            case YEAR: {
              // "d/M/y – "
              formatField(s, 'd', 1, b);
              b.append("/");
              formatField(s, 'M', 1, b);
              b.append("/");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "d/M/y"
              formatField(e, 'd', 1, b);
              b.append("/");
              formatField(e, 'M', 1, b);
              b.append("/");
              formatField(e, 'y', 1, b);
              return;
            }
            case MONTH: {
              // "d/M/y – "
              formatField(s, 'd', 1, b);
              b.append("/");
              formatField(s, 'M', 1, b);
              b.append("/");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "d/M/y"
              formatField(e, 'd', 1, b);
              b.append("/");
              formatField(e, 'M', 1, b);
              b.append("/");
              formatField(e, 'y', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "MMMd": {
          switch (f) {
            case DAY: {
              // "MMM d–"
              formatField(s, 'M', 3, b);
              b.append(" ");
              formatField(s, 'd', 1, b);
              b.append("–");
              // "d"
              formatField(e, 'd', 1, b);
              return;
            }
            case MONTH: {
              // "d MMM – "
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 3, b);
              b.append(" – ");
              // "d MMM"
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "yM": {
          switch (f) {
            case YEAR: {
              // "M/y – "
              formatField(s, 'M', 1, b);
              b.append("/");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "M/y"
              formatField(e, 'M', 1, b);
              b.append("/");
              formatField(e, 'y', 1, b);
              return;
            }
            case MONTH: {
              // "M/y – "
              formatField(s, 'M', 1, b);
              b.append("/");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "M/y"
              formatField(e, 'M', 1, b);
              b.append("/");
              formatField(e, 'y', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "yMMMEEEEd": {
          switch (f) {
            case DAY: {
              // "EEEEที่ d – "
              formatField(s, 'E', 4, b);
              b.append("ที่ ");
              formatField(s, 'd', 1, b);
              b.append(" – ");
              // "EEEEที่ d MMM y"
              formatField(e, 'E', 4, b);
              b.append("ที่ ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case YEAR: {
              // "EEEEที่ d MMM y – "
              formatField(s, 'E', 4, b);
              b.append("ที่ ");
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 3, b);
              b.append(" ");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "EEEEที่ d MMM y"
              formatField(e, 'E', 4, b);
              b.append("ที่ ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case MONTH: {
              // "EEEEที่ d MMM – "
              formatField(s, 'E', 4, b);
              b.append("ที่ ");
              formatField(s, 'd', 1, b);
              b.append(" ");
              formatField(s, 'M', 3, b);
              b.append(" – ");
              // "EEEEที่ d MMM y"
              formatField(e, 'E', 4, b);
              b.append("ที่ ");
              formatField(e, 'd', 1, b);
              b.append(" ");
              formatField(e, 'M', 3, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "yMMMM": {
          switch (f) {
            case YEAR: {
              // "MMMM y – "
              formatField(s, 'M', 4, b);
              b.append(" ");
              formatField(s, 'y', 1, b);
              b.append(" – ");
              // "MMMM y"
              formatField(e, 'M', 4, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            case MONTH: {
              // "MMMM – "
              formatField(s, 'M', 4, b);
              b.append(" – ");
              // "MMMM y"
              formatField(e, 'M', 4, b);
              b.append(" ");
              formatField(e, 'y', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "Md": {
          switch (f) {
            case DAY: {
              // "d/M – "
              formatField(s, 'd', 1, b);
              b.append("/");
              formatField(s, 'M', 1, b);
              b.append(" – ");
              // "d/M"
              formatField(e, 'd', 1, b);
              b.append("/");
              formatField(e, 'M', 1, b);
              return;
            }
            case MONTH: {
              // "d/M – "
              formatField(s, 'd', 1, b);
              b.append("/");
              formatField(s, 'M', 1, b);
              b.append(" – ");
              // "d/M"
              formatField(e, 'd', 1, b);
              b.append("/");
              formatField(e, 'M', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        case "y": {
          switch (f) {
            case YEAR: {
              // "y–"
              formatField(s, 'y', 1, b);
              b.append("–");
              // "y"
              formatField(e, 'y', 1, b);
              return;
            }
            default: break;
          }
          break;
        }
        default: break;
      }
      // "{0} – {1}"
      formatSkeleton(k, s, b);
      b.append(" – ");
      formatSkeleton(k, e, b);
    }
  }

  protected void wrapTimeZoneGMT(StringBuilder b, boolean neg, int hours, int mins,
      boolean _short) {
    if (hours == 0 && mins == 0) {
      b.append("GMT");
      return;
    }
    boolean emitMins = !_short || mins > 0;
    b.append("GMT");
    if (neg) {
      b.append("-");
      zeroPad2(b, hours, _short ? 1 : 2);
      if (emitMins) {
        b.append(":");
      }
      if (emitMins) {
        zeroPad2(b, mins, 2);
      }
    }
    else {
      b.append("+");
      zeroPad2(b, hours, _short ? 1 : 2);
      if (emitMins) {
        b.append(":");
      }
      if (emitMins) {
        zeroPad2(b, mins, 2);
      }
    }
  }

  protected void wrapTimeZoneRegion(StringBuilder b, String region) {
    b.append("เวลา");
    b.append(region);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy