Java/Development Class/TimeZone
Содержание
- 1 Converting Times Between Time Zones
- 2 Convert the date to the given timezone
- 3 Convert time between timezone
- 4 Create a Calendar object with the local time zone and set the UTC from japanCal
- 5 Display Available Time Zones
- 6 Format TimeZone in z (General time zone) format like EST.
- 7 Format TimeZone in Z (RFC 822) format like -8000.
- 8 Format TimeZone in zzzz format Eastern Standard Time.
- 9 Get all available timezones
- 10 Get current TimeZone using Java Calendar
- 11 Get the time in the local time zone
- 12 Getting the Current Time in Another Time Zone
- 13 Timezone conversion routines
- 14 TimeZone.getTimeZone("America/New_York")
- 15 TimeZone.getTimeZone("Asia/Tokyo")
- 16 TimeZone.getTimeZone("Europe/Paris")
- 17 Using the Calendar Class to Display Current Time in Different Time Zones
Converting Times Between Time Zones
<source lang="java">
import java.util.Calendar; import java.util.GregorianCalendar; public class Main {
public static void main(String[] argv) throws Exception { // Create a Calendar object with the local time zone Calendar local = new GregorianCalendar(); local.set(Calendar.HOUR_OF_DAY, 10); // 0..23 local.set(Calendar.MINUTE, 0); local.set(Calendar.SECOND, 0); }
}
</source>
Convert the date to the given timezone
<source lang="java">
/*
* Funambol is a mobile platform developed by Funambol, Inc. * Copyright (C) 2003 - 2007 Funambol, Inc. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License version 3 as published by * the Free Software Foundation with the addition of the following permission * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License * along with this program; if not, see http://www.gnu.org/licenses or write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA. * * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite * 305, Redwood City, CA 94063, USA, or at email address info@funambol.ru. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License * version 3, these Appropriate Legal Notices must retain the display of the * "Powered by Funambol" logo. If the display of the logo is not reasonably * feasible for technical reasons, the Appropriate Legal Notices must display * the words "Powered by Funambol". */
import java.util.Calendar; import java.util.Date; import java.util.TimeZone;
/**
* Utility class for date manipulation. * This class gives a simple interface for common Date, Calendar and Timezone * operations. * It is possible to apply subsequent transformations to an initial date, and * retrieve the changed Date object at any point. * */
public class DateUtil {
//-------------------------------------------------------------- Attributes private Calendar cal; //------------------------------------------------------------ Constructors /** Inizialize a new instance with the current date */ public DateUtil() { this(new Date()); } /** Inizialize a new instance with the given date */ public DateUtil(Date d) { cal = Calendar.getInstance(); cal.setTime(d); } //---------------------------------------------------------- Public methods /** Set a new time */ public void setTime(Date d) { cal.setTime(d); } /** Get the current time */ public Date getTime() { return cal.getTime(); } /** Get the current TimeZone */ public String getTZ() { return cal.getTimeZone().getID(); } /** * Convert the time to the midnight of the currently set date. * The internal date is changed after this call. * * @return a reference to this DateUtil, for concatenation. */ public DateUtil toMidnight() { cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND,0); return this; } /** * Make the date go back of the specified amount of days * The internal date is changed after this call. * * @return a reference to this DateUtil, for concatenation. */ public DateUtil removeDays(int days) { Date d = cal.getTime(); long time = d.getTime(); time -= days * 24 * 3600 * 1000; d.setTime(time); cal.setTime(d); return this; } /** * Make the date go forward of the specified amount of minutes * The internal date is changed after this call. * * @return a reference to this DateUtil, for concatenation. */ public DateUtil addMinutes(int minutes) { Date d = cal.getTime(); long time = d.getTime(); time += minutes * 60 * 1000; d.setTime(time); cal.setTime(d); return this; } /** * Convert the date to GMT. The internal date is changed * * @return a reference to this DateUtil, for concatenation. */ public DateUtil toGMT() { return toTZ("GMT"); } /** * Convert the date to the given timezone. The internal date is changed. * * @param tz The name of the timezone to set * * @return a reference to this DateUtil, for concatenation. */ public DateUtil toTZ(String tz) { cal.setTimeZone(TimeZone.getTimeZone(tz)); return this; } /** * Get the days passed from the specified date up to the date provided * in the constructor * * @param date The starting date * * @return number of days within date used in constructor and the provided * date */ public int getDaysSince(Date date) { long millisecs = date.getTime(); Date d = cal.getTime(); long time = d.getTime(); long daysMillisecs = time - millisecs; int days = (int)((((daysMillisecs / 1000)/60)/60)/24); return days; } /** * Utility method wrapping Calendar.after method * Compares the date field parameter with the date provided with the constructor * answering the question: date from constructor is after the given param date ? * * @param date The date to be used for comparison * * @return true if date from constructor is after given param date */ public boolean isAfter(Date date) { Calendar cal2 = Calendar.getInstance(); cal2.setTime(date); return cal.after(cal2); }
}
</source>
Convert time between timezone
<source lang="java">
import java.util.Calendar; import java.util.GregorianCalendar; import java.util.TimeZone; public class Main {
public static void main(String[] args) { Calendar localTime = Calendar.getInstance(); localTime.set(Calendar.HOUR, 17); localTime.set(Calendar.MINUTE, 15); localTime.set(Calendar.SECOND, 20); int hour = localTime.get(Calendar.HOUR); int minute = localTime.get(Calendar.MINUTE); int second = localTime.get(Calendar.SECOND); System.out.printf("Local time : %02d:%02d:%02d\n", hour, minute, second); Calendar germanyTime = new GregorianCalendar(TimeZone.getTimeZone("Germany")); germanyTime.setTimeInMillis(localTime.getTimeInMillis()); hour = germanyTime.get(Calendar.HOUR); minute = germanyTime.get(Calendar.MINUTE); second = germanyTime.get(Calendar.SECOND); System.out.printf("Germany time: %02d:%02d:%02d\n", hour, minute, second); }
}
</source>
Create a Calendar object with the local time zone and set the UTC from japanCal
<source lang="java">
import java.util.Calendar; import java.util.GregorianCalendar; import java.util.TimeZone; public class Main {
public static void main(String[] argv) throws Exception { Calendar japanCal = new GregorianCalendar(TimeZone.getTimeZone("Japan")); japanCal.set(Calendar.HOUR_OF_DAY, 10); // 0..23 japanCal.set(Calendar.MINUTE, 0); japanCal.set(Calendar.SECOND, 0); Calendar local = new GregorianCalendar(); local.setTimeInMillis(japanCal.getTimeInMillis()); }
}
</source>
Display Available Time Zones
<source lang="java">
import java.util.Arrays; import java.util.TimeZone; public class Main {
public static void main(String[] args) { String[] allTimeZones = TimeZone.getAvailableIDs(); Arrays.sort(allTimeZones); for (String timezone : allTimeZones) { System.out.println(timezone); } }
} /*ACT AET AGT ART AST Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmara Africa/Asmera Africa/Bamako Africa/Bangui Africa/Banjul Africa/Bissau Africa/Blantyre Africa/Brazzaville Africa/Bujumbura Africa/Cairo Africa/Casablanca Africa/Ceuta Africa/Conakry Africa/Dakar Africa/Dar_es_Salaam Africa/Djibouti Africa/Douala Africa/El_Aaiun Africa/Freetown Africa/Gaborone Africa/Harare Africa/Johannesburg Africa/Kampala Africa/Khartoum Africa/Kigali Africa/Kinshasa Africa/Lagos Africa/Libreville Africa/Lome Africa/Luanda Africa/Lubumbashi Africa/Lusaka Africa/Malabo Africa/Maputo Africa/Maseru Africa/Mbabane Africa/Mogadishu Africa/Monrovia Africa/Nairobi Africa/Ndjamena Africa/Niamey Africa/Nouakchott Africa/Ouagadougou Africa/Porto-Novo Africa/Sao_Tome Africa/Timbuktu Africa/Tripoli Africa/Tunis Africa/Windhoek America/Adak America/Anchorage America/Anguilla America/Antigua America/Araguaina America/Argentina/Buenos_Aires America/Argentina/Catamarca America/Argentina/ComodRivadavia America/Argentina/Cordoba America/Argentina/Jujuy America/Argentina/La_Rioja America/Argentina/Mendoza America/Argentina/Rio_Gallegos America/Argentina/Salta America/Argentina/San_Juan America/Argentina/San_Luis America/Argentina/Tucuman America/Argentina/Ushuaia America/Aruba America/Asuncion America/Atikokan America/Atka America/Bahia America/Barbados America/Belem America/Belize America/Blanc-Sablon America/Boa_Vista America/Bogota America/Boise America/Buenos_Aires America/Cambridge_Bay America/Campo_Grande America/Cancun America/Caracas America/Catamarca America/Cayenne America/Cayman America/Chicago America/Chihuahua America/Coral_Harbour America/Cordoba America/Costa_Rica America/Cuiaba America/Curacao America/Danmarkshavn America/Dawson America/Dawson_Creek America/Denver America/Detroit America/Dominica America/Edmonton America/Eirunepe America/El_Salvador America/Ensenada America/Fort_Wayne America/Fortaleza America/Glace_Bay America/Godthab America/Goose_Bay America/Grand_Turk America/Grenada America/Guadeloupe America/Guatemala America/Guayaquil America/Guyana America/Halifax America/Havana America/Hermosillo America/Indiana/Indianapolis America/Indiana/Knox America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Tell_City America/Indiana/Vevay America/Indiana/Vincennes America/Indiana/Winamac America/Indianapolis America/Inuvik America/Iqaluit America/Jamaica America/Jujuy America/Juneau America/Kentucky/Louisville America/Kentucky/Monticello America/Knox_IN America/La_Paz America/Lima America/Los_Angeles America/Louisville America/Maceio America/Managua America/Manaus America/Marigot America/Martinique America/Mazatlan America/Mendoza America/Menominee America/Merida America/Mexico_City America/Miquelon America/Moncton America/Monterrey America/Montevideo America/Montreal America/Montserrat America/Nassau America/New_York America/Nipigon America/Nome America/Noronha America/North_Dakota/Center America/North_Dakota/New_Salem America/Panama America/Pangnirtung America/Paramaribo America/Phoenix America/Port-au-Prince America/Port_of_Spain America/Porto_Acre America/Porto_Velho America/Puerto_Rico America/Rainy_River America/Rankin_Inlet America/Recife America/Regina America/Resolute America/Rio_Branco America/Rosario America/Santarem America/Santiago America/Santo_Domingo America/Sao_Paulo America/Scoresbysund America/Shiprock America/St_Barthelemy America/St_Johns America/St_Kitts America/St_Lucia America/St_Thomas America/St_Vincent America/Swift_Current America/Tegucigalpa America/Thule America/Thunder_Bay America/Tijuana America/Toronto America/Tortola America/Vancouver America/Virgin America/Whitehorse America/Winnipeg America/Yakutat America/Yellowknife Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/McMurdo Antarctica/Palmer Antarctica/Rothera Antarctica/South_Pole Antarctica/Syowa Antarctica/Vostok Arctic/Longyearbyen Asia/Aden Asia/Almaty Asia/Amman Asia/Anadyr Asia/Aqtau Asia/Aqtobe Asia/Ashgabat Asia/Ashkhabad Asia/Baghdad Asia/Bahrain Asia/Baku Asia/Bangkok Asia/Beirut Asia/Bishkek Asia/Brunei Asia/Calcutta Asia/Choibalsan Asia/Chongqing Asia/Chungking Asia/Colombo Asia/Dacca Asia/Damascus Asia/Dhaka Asia/Dili Asia/Dubai Asia/Dushanbe Asia/Gaza Asia/Harbin Asia/Ho_Chi_Minh Asia/Hong_Kong Asia/Hovd Asia/Irkutsk Asia/Istanbul Asia/Jakarta Asia/Jayapura Asia/Jerusalem Asia/Kabul Asia/Kamchatka Asia/Karachi Asia/Kashgar Asia/Katmandu Asia/Kolkata Asia/Krasnoyarsk Asia/Kuala_Lumpur Asia/Kuching Asia/Kuwait Asia/Macao Asia/Macau Asia/Magadan Asia/Makassar Asia/Manila Asia/Muscat Asia/Nicosia Asia/Novosibirsk Asia/Omsk Asia/Oral Asia/Phnom_Penh Asia/Pontianak Asia/Pyongyang Asia/Qatar Asia/Qyzylorda Asia/Rangoon Asia/Riyadh Asia/Riyadh87 Asia/Riyadh88 Asia/Riyadh89 Asia/Saigon Asia/Sakhalin Asia/Samarkand Asia/Seoul Asia/Shanghai Asia/Singapore Asia/Taipei Asia/Tashkent Asia/Tbilisi Asia/Tehran Asia/Tel_Aviv Asia/Thimbu Asia/Thimphu Asia/Tokyo Asia/Ujung_Pandang Asia/Ulaanbaatar Asia/Ulan_Bator Asia/Urumqi Asia/Vientiane Asia/Vladivostok Asia/Yakutsk Asia/Yekaterinburg Asia/Yerevan Atlantic/Azores Atlantic/Bermuda Atlantic/Canary Atlantic/Cape_Verde Atlantic/Faeroe Atlantic/Faroe Atlantic/Jan_Mayen Atlantic/Madeira Atlantic/Reykjavik Atlantic/South_Georgia Atlantic/St_Helena Atlantic/Stanley Australia/ACT Australia/Adelaide Australia/Brisbane Australia/Broken_Hill Australia/Canberra Australia/Currie Australia/Darwin Australia/Eucla Australia/Hobart Australia/LHI Australia/Lindeman Australia/Lord_Howe Australia/Melbourne Australia/NSW Australia/North Australia/Perth Australia/Queensland Australia/South Australia/Sydney Australia/Tasmania Australia/Victoria Australia/West Australia/Yancowinna BET BST Brazil/Acre Brazil/DeNoronha Brazil/East Brazil/West CAT CET CNT CST CST6CDT CTT Canada/Atlantic Canada/Central Canada/East-Saskatchewan Canada/Eastern Canada/Mountain Canada/Newfoundland Canada/Pacific Canada/Saskatchewan Canada/Yukon Chile/Continental Chile/EasterIsland Cuba EAT ECT EET EST EST5EDT Egypt Eire Etc/GMT Etc/GMT+0 Etc/GMT+1 Etc/GMT+10 Etc/GMT+11 Etc/GMT+12 Etc/GMT+2 Etc/GMT+3 Etc/GMT+4 Etc/GMT+5 Etc/GMT+6 Etc/GMT+7 Etc/GMT+8 Etc/GMT+9 Etc/GMT-0 Etc/GMT-1 Etc/GMT-10 Etc/GMT-11 Etc/GMT-12 Etc/GMT-13 Etc/GMT-14 Etc/GMT-2 Etc/GMT-3 Etc/GMT-4 Etc/GMT-5 Etc/GMT-6 Etc/GMT-7 Etc/GMT-8 Etc/GMT-9 Etc/GMT0 Etc/Greenwich Etc/UCT Etc/UTC Etc/Universal Etc/Zulu Europe/Amsterdam Europe/Andorra Europe/Athens Europe/Belfast Europe/Belgrade Europe/Berlin Europe/Bratislava Europe/Brussels Europe/Bucharest Europe/Budapest Europe/Chisinau Europe/Copenhagen Europe/Dublin Europe/Gibraltar Europe/Guernsey Europe/Helsinki Europe/Isle_of_Man Europe/Istanbul Europe/Jersey Europe/Kaliningrad Europe/Kiev Europe/Lisbon Europe/Ljubljana Europe/London Europe/Luxembourg Europe/Madrid Europe/Malta Europe/Mariehamn Europe/Minsk Europe/Monaco Europe/Moscow Europe/Nicosia Europe/Oslo Europe/Paris Europe/Podgorica Europe/Prague Europe/Riga Europe/Rome Europe/Samara Europe/San_Marino Europe/Sarajevo Europe/Simferopol Europe/Skopje Europe/Sofia Europe/Stockholm Europe/Tallinn Europe/Tirane Europe/Tiraspol Europe/Uzhgorod Europe/Vaduz Europe/Vatican Europe/Vienna Europe/Vilnius Europe/Volgograd Europe/Warsaw Europe/Zagreb Europe/Zaporozhye Europe/Zurich GB GB-Eire GMT GMT0 Greenwich HST Hongkong IET IST Iceland Indian/Antananarivo Indian/Chagos Indian/Christmas Indian/Cocos Indian/Comoro Indian/Kerguelen Indian/Mahe Indian/Maldives Indian/Mauritius Indian/Mayotte Indian/Reunion Iran Israel JST Jamaica Japan Kwajalein Libya MET MIT MST MST7MDT Mexico/BajaNorte Mexico/BajaSur Mexico/General Mideast/Riyadh87 Mideast/Riyadh88 Mideast/Riyadh89 NET NST NZ NZ-CHAT Navajo PLT PNT PRC PRT PST PST8PDT Pacific/Apia Pacific/Auckland Pacific/Chatham Pacific/Easter Pacific/Efate Pacific/Enderbury Pacific/Fakaofo Pacific/Fiji Pacific/Funafuti Pacific/Galapagos Pacific/Gambier Pacific/Guadalcanal Pacific/Guam Pacific/Honolulu Pacific/Johnston Pacific/Kiritimati Pacific/Kosrae Pacific/Kwajalein Pacific/Majuro Pacific/Marquesas Pacific/Midway Pacific/Nauru Pacific/Niue Pacific/Norfolk Pacific/Noumea Pacific/Pago_Pago Pacific/Palau Pacific/Pitcairn Pacific/Ponape Pacific/Port_Moresby Pacific/Rarotonga Pacific/Saipan Pacific/Samoa Pacific/Tahiti Pacific/Tarawa Pacific/Tongatapu Pacific/Truk Pacific/Wake Pacific/Wallis Pacific/Yap Poland Portugal ROK SST Singapore SystemV/AST4 SystemV/AST4ADT SystemV/CST6 SystemV/CST6CDT SystemV/EST5 SystemV/EST5EDT SystemV/HST10 SystemV/MST7 SystemV/MST7MDT SystemV/PST8 SystemV/PST8PDT SystemV/YST9 SystemV/YST9YDT Turkey UCT US/Alaska US/Aleutian US/Arizona US/Central US/East-Indiana US/Eastern US/Hawaii US/Indiana-Starke US/Michigan US/Mountain US/Pacific US/Pacific-New US/Samoa UTC Universal VST W-SU WET Zulu
- /
</source>
Format TimeZone in z (General time zone) format like EST.
<source lang="java">
import java.text.SimpleDateFormat; import java.util.Date; public class Main {
public static void main(String[] args) { Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("zzz"); System.out.println("TimeZone in z format : " + sdf.format(date)); }
} //TimeZone in z format : PST
</source>
Format TimeZone in Z (RFC 822) format like -8000.
<source lang="java">
import java.text.SimpleDateFormat; import java.util.Date; public class Main {
public static void main(String[] args) { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("Z"); System.out.println("TimeZone in Z format : " + sdf.format(date)); }
} //TimeZone in Z format : -0800
</source>
Format TimeZone in zzzz format Eastern Standard Time.
<source lang="java">
import java.text.SimpleDateFormat; import java.util.Date; public class Main {
public static void main(String[] args) { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("zzzz"); System.out.println("TimeZone in zzzz format : " + sdf.format(date)); }
} //TimeZone in zzzz format : Pacific Standard Time
</source>
Get all available timezones
<source lang="java">
import java.util.TimeZone; public class Main {
public static void main(String[] args) { String[] availableTimezones = TimeZone.getAvailableIDs(); for (String timezone : availableTimezones) { System.out.println("Timezone ID = " + timezone); } }
}
</source>
Get current TimeZone using Java Calendar
<source lang="java">
import java.util.Calendar; import java.util.TimeZone; public class Main {
public static void main(String[] args) { Calendar now = Calendar.getInstance(); TimeZone timeZone = now.getTimeZone(); System.out.println("Current TimeZone is : " + timeZone.getDisplayName()); }
}
</source>
Get the time in the local time zone
<source lang="java">
import java.util.Calendar; import java.util.GregorianCalendar; import java.util.TimeZone; public class Main {
public static void main(String[] argv) throws Exception { Calendar japanCal = new GregorianCalendar(TimeZone.getTimeZone("Japan")); japanCal.set(Calendar.HOUR_OF_DAY, 10); // 0..23 japanCal.set(Calendar.MINUTE, 0); japanCal.set(Calendar.SECOND, 0); Calendar local = new GregorianCalendar(); local.setTimeInMillis(japanCal.getTimeInMillis()); int hour = local.get(Calendar.HOUR); // 5 int minutes = local.get(Calendar.MINUTE); // 0 int seconds = local.get(Calendar.SECOND); // 0 boolean am = local.get(Calendar.AM_PM) == Calendar.AM; // false }
}
</source>
Getting the Current Time in Another Time Zone
<source lang="java">
import java.util.Calendar; import java.util.GregorianCalendar; import java.util.TimeZone; public class Main {
public static void main(String[] argv) throws Exception { // Get the current time in Hong Kong Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("Hongkong")); int hour12 = cal.get(Calendar.HOUR); // 0..11 int minutes = cal.get(Calendar.MINUTE); // 0..59 int seconds = cal.get(Calendar.SECOND); // 0..59 boolean am = cal.get(Calendar.AM_PM) == Calendar.AM; // Get the current hour-of-day at GMT cal.setTimeZone(TimeZone.getTimeZone("GMT")); int hour24 = cal.get(Calendar.HOUR_OF_DAY); // 0..23 // Get the current local hour-of-day cal.setTimeZone(TimeZone.getDefault()); hour24 = cal.get(Calendar.HOUR_OF_DAY); // 0..23 }
}
</source>
Timezone conversion routines
<source lang="java">
/*
Copyright (C) 2002 MySQL AB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
import java.sql.Time; import java.sql.Timestamp; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.TimeZone; /**
* Timezone conversion routines * * @author Mark Matthews */
public class TimeUtil {
//~ Instance/static variables ............................................. static TimeZone GMT_TIMEZONE = TimeZone.getTimeZone("GMT"); static final HashMap TIMEZONE_MAPPINGS; //~ Initializers .......................................................... static { TIMEZONE_MAPPINGS = new HashMap(175); // // Windows Mappings // TIMEZONE_MAPPINGS.put("Romance", "Europe/Paris"); TIMEZONE_MAPPINGS.put("Romance Standard Time", "Europe/Paris"); TIMEZONE_MAPPINGS.put("Warsaw", "Europe/Warsaw"); TIMEZONE_MAPPINGS.put("Central Europe", "Europe/Prague"); TIMEZONE_MAPPINGS.put("Central Europe Standard Time", "Europe/Prague"); TIMEZONE_MAPPINGS.put("Prague Bratislava", "Europe/Prague"); TIMEZONE_MAPPINGS.put("W. Central Africa Standard Time", "Africa/Luanda"); TIMEZONE_MAPPINGS.put("FLE", "Europe/Helsinki"); TIMEZONE_MAPPINGS.put("FLE Standard Time", "Europe/Helsinki"); TIMEZONE_MAPPINGS.put("GFT", "Europe/Athens"); TIMEZONE_MAPPINGS.put("GFT Standard Time", "Europe/Athens"); TIMEZONE_MAPPINGS.put("GTB", "Europe/Athens"); TIMEZONE_MAPPINGS.put("GTB Standard Time", "Europe/Athens"); TIMEZONE_MAPPINGS.put("Israel", "Asia/Jerusalem"); TIMEZONE_MAPPINGS.put("Israel Standard Time", "Asia/Jerusalem"); TIMEZONE_MAPPINGS.put("Arab", "Asia/Riyadh"); TIMEZONE_MAPPINGS.put("Arab Standard Time", "Asia/Riyadh"); TIMEZONE_MAPPINGS.put("Arabic Standard Time", "Asia/Baghdad"); TIMEZONE_MAPPINGS.put("E. Africa", "Africa/Nairobi"); TIMEZONE_MAPPINGS.put("E. Africa Standard Time", "Africa/Nairobi"); TIMEZONE_MAPPINGS.put("Saudi Arabia", "Asia/Riyadh"); TIMEZONE_MAPPINGS.put("Saudi Arabia Standard Time", "Asia/Riyadh"); TIMEZONE_MAPPINGS.put("Iran", "Asia/Tehran"); TIMEZONE_MAPPINGS.put("Iran Standard Time", "Asia/Tehran"); TIMEZONE_MAPPINGS.put("Afghanistan", "Asia/Kabul"); TIMEZONE_MAPPINGS.put("Afghanistan Standard Time", "Asia/Kabul"); TIMEZONE_MAPPINGS.put("India", "Asia/Calcutta"); TIMEZONE_MAPPINGS.put("India Standard Time", "Asia/Calcutta"); TIMEZONE_MAPPINGS.put("Myanmar Standard Time", "Asia/Rangoon"); TIMEZONE_MAPPINGS.put("Nepal Standard Time", "Asia/Katmandu"); TIMEZONE_MAPPINGS.put("Sri Lanka", "Asia/Colombo"); TIMEZONE_MAPPINGS.put("Sri Lanka Standard Time", "Asia/Colombo"); TIMEZONE_MAPPINGS.put("Beijing", "Asia/Shanghai"); TIMEZONE_MAPPINGS.put("China", "Asia/Shanghai"); TIMEZONE_MAPPINGS.put("China Standard Time", "Asia/Shanghai"); TIMEZONE_MAPPINGS.put("AUS Central", "Australia/Darwin"); TIMEZONE_MAPPINGS.put("AUS Central Standard Time", "Australia/Darwin"); TIMEZONE_MAPPINGS.put("Cen. Australia", "Australia/Adelaide"); TIMEZONE_MAPPINGS.put("Cen. Australia Standard Time", "Australia/Adelaide"); TIMEZONE_MAPPINGS.put("Vladivostok", "Asia/Vladivostok"); TIMEZONE_MAPPINGS.put("Vladivostok Standard Time", "Asia/Vladivostok"); TIMEZONE_MAPPINGS.put("West Pacific", "Pacific/Guam"); TIMEZONE_MAPPINGS.put("West Pacific Standard Time", "Pacific/Guam"); TIMEZONE_MAPPINGS.put("E. South America", "America/Sao_Paulo"); TIMEZONE_MAPPINGS.put("E. South America Standard Time", "America/Sao_Paulo"); TIMEZONE_MAPPINGS.put("Greenland Standard Time", "America/Godthab"); TIMEZONE_MAPPINGS.put("Newfoundland", "America/St_Johns"); TIMEZONE_MAPPINGS.put("Newfoundland Standard Time", "America/St_Johns"); TIMEZONE_MAPPINGS.put("Pacific SA", "America/Caracas"); TIMEZONE_MAPPINGS.put("Pacific SA Standard Time", "America/Caracas"); TIMEZONE_MAPPINGS.put("SA Western", "America/Caracas"); TIMEZONE_MAPPINGS.put("SA Western Standard Time", "America/Caracas"); TIMEZONE_MAPPINGS.put("SA Pacific", "America/Bogota"); TIMEZONE_MAPPINGS.put("SA Pacific Standard Time", "America/Bogota"); TIMEZONE_MAPPINGS.put("US Eastern", "America/Indianapolis"); TIMEZONE_MAPPINGS.put("US Eastern Standard Time", "America/Indianapolis"); TIMEZONE_MAPPINGS.put("Central America Standard Time", "America/Regina"); TIMEZONE_MAPPINGS.put("Mexico", "America/Mexico_City"); TIMEZONE_MAPPINGS.put("Mexico Standard Time", "America/Mexico_City"); TIMEZONE_MAPPINGS.put("Canada Central", "America/Regina"); TIMEZONE_MAPPINGS.put("Canada Central Standard Time", "America/Regina"); TIMEZONE_MAPPINGS.put("US Mountain", "America/Phoenix"); TIMEZONE_MAPPINGS.put("US Mountain Standard Time", "America/Phoenix"); TIMEZONE_MAPPINGS.put("GMT", "Europe/London"); TIMEZONE_MAPPINGS.put("GMT Standard Time", "Europe/London"); TIMEZONE_MAPPINGS.put("Ekaterinburg", "Asia/Yekaterinburg"); TIMEZONE_MAPPINGS.put("Ekaterinburg Standard Time", "Asia/Yekaterinburg"); TIMEZONE_MAPPINGS.put("West Asia", "Asia/Karachi"); TIMEZONE_MAPPINGS.put("West Asia Standard Time", "Asia/Karachi"); TIMEZONE_MAPPINGS.put("Central Asia", "Asia/Dhaka"); TIMEZONE_MAPPINGS.put("Central Asia Standard Time", "Asia/Dhaka"); TIMEZONE_MAPPINGS.put("N. Central Asia Standard Time", "Asia/Novosibirsk"); TIMEZONE_MAPPINGS.put("Bangkok", "Asia/Bangkok"); TIMEZONE_MAPPINGS.put("Bangkok Standard Time", "Asia/Bangkok"); TIMEZONE_MAPPINGS.put("North Asia Standard Time", "Asia/Krasnoyarsk"); TIMEZONE_MAPPINGS.put("SE Asia", "Asia/Bangkok"); TIMEZONE_MAPPINGS.put("SE Asia Standard Time", "Asia/Bangkok"); TIMEZONE_MAPPINGS.put("North Asia East Standard Time", "Asia/Ulaanbaatar"); TIMEZONE_MAPPINGS.put("Singapore", "Asia/Singapore"); TIMEZONE_MAPPINGS.put("Singapore Standard Time", "Asia/Singapore"); TIMEZONE_MAPPINGS.put("Taipei", "Asia/Taipei"); TIMEZONE_MAPPINGS.put("Taipei Standard Time", "Asia/Taipei"); TIMEZONE_MAPPINGS.put("W. Australia", "Australia/Perth"); TIMEZONE_MAPPINGS.put("W. Australia Standard Time", "Australia/Perth"); TIMEZONE_MAPPINGS.put("Korea", "Asia/Seoul"); TIMEZONE_MAPPINGS.put("Korea Standard Time", "Asia/Seoul"); TIMEZONE_MAPPINGS.put("Tokyo", "Asia/Tokyo"); TIMEZONE_MAPPINGS.put("Tokyo Standard Time", "Asia/Tokyo"); TIMEZONE_MAPPINGS.put("Yakutsk", "Asia/Yakutsk"); TIMEZONE_MAPPINGS.put("Yakutsk Standard Time", "Asia/Yakutsk"); TIMEZONE_MAPPINGS.put("Central European", "Europe/Belgrade"); TIMEZONE_MAPPINGS.put("Central European Standard Time", "Europe/Belgrade"); TIMEZONE_MAPPINGS.put("W. Europe", "Europe/Berlin"); TIMEZONE_MAPPINGS.put("W. Europe Standard Time", "Europe/Berlin"); TIMEZONE_MAPPINGS.put("Tasmania", "Australia/Hobart"); TIMEZONE_MAPPINGS.put("Tasmania Standard Time", "Australia/Hobart"); TIMEZONE_MAPPINGS.put("AUS Eastern", "Australia/Sydney"); TIMEZONE_MAPPINGS.put("AUS Eastern Standard Time", "Australia/Sydney"); TIMEZONE_MAPPINGS.put("E. Australia", "Australia/Brisbane"); TIMEZONE_MAPPINGS.put("E. Australia Standard Time", "Australia/Brisbane"); TIMEZONE_MAPPINGS.put("Sydney Standard Time", "Australia/Sydney"); TIMEZONE_MAPPINGS.put("Central Pacific", "Pacific/Guadalcanal"); TIMEZONE_MAPPINGS.put("Central Pacific Standard Time", "Pacific/Guadalcanal"); TIMEZONE_MAPPINGS.put("Dateline", "Pacific/Majuro"); TIMEZONE_MAPPINGS.put("Dateline Standard Time", "Pacific/Majuro"); TIMEZONE_MAPPINGS.put("Fiji", "Pacific/Fiji"); TIMEZONE_MAPPINGS.put("Fiji Standard Time", "Pacific/Fiji"); TIMEZONE_MAPPINGS.put("Samoa", "Pacific/Apia"); TIMEZONE_MAPPINGS.put("Samoa Standard Time", "Pacific/Apia"); TIMEZONE_MAPPINGS.put("Hawaiian", "Pacific/Honolulu"); TIMEZONE_MAPPINGS.put("Hawaiian Standard Time", "Pacific/Honolulu"); TIMEZONE_MAPPINGS.put("Alaskan", "America/Anchorage"); TIMEZONE_MAPPINGS.put("Alaskan Standard Time", "America/Anchorage"); TIMEZONE_MAPPINGS.put("Pacific", "America/Los_Angeles"); TIMEZONE_MAPPINGS.put("Pacific Standard Time", "America/Los_Angeles"); TIMEZONE_MAPPINGS.put("Mexico Standard Time 2", "America/Chihuahua"); TIMEZONE_MAPPINGS.put("Mountain", "America/Denver"); TIMEZONE_MAPPINGS.put("Mountain Standard Time", "America/Denver"); TIMEZONE_MAPPINGS.put("Central", "America/Chicago"); TIMEZONE_MAPPINGS.put("Central Standard Time", "America/Chicago"); TIMEZONE_MAPPINGS.put("Eastern", "America/New_York"); TIMEZONE_MAPPINGS.put("Eastern Standard Time", "America/New_York"); TIMEZONE_MAPPINGS.put("E. Europe", "Europe/Bucharest"); TIMEZONE_MAPPINGS.put("E. Europe Standard Time", "Europe/Bucharest"); TIMEZONE_MAPPINGS.put("Egypt", "Africa/Cairo"); TIMEZONE_MAPPINGS.put("Egypt Standard Time", "Africa/Cairo"); TIMEZONE_MAPPINGS.put("South Africa", "Africa/Harare"); TIMEZONE_MAPPINGS.put("South Africa Standard Time", "Africa/Harare"); TIMEZONE_MAPPINGS.put("Atlantic", "America/Halifax"); TIMEZONE_MAPPINGS.put("Atlantic Standard Time", "America/Halifax"); TIMEZONE_MAPPINGS.put("SA Eastern", "America/Buenos_Aires"); TIMEZONE_MAPPINGS.put("SA Eastern Standard Time", "America/Buenos_Aires"); TIMEZONE_MAPPINGS.put("Mid-Atlantic", "Atlantic/South_Georgia"); TIMEZONE_MAPPINGS.put("Mid-Atlantic Standard Time", "Atlantic/South_Georgia"); TIMEZONE_MAPPINGS.put("Azores", "Atlantic/Azores"); TIMEZONE_MAPPINGS.put("Azores Standard Time", "Atlantic/Azores"); TIMEZONE_MAPPINGS.put("Cape Verde Standard Time", "Atlantic/Cape_Verde"); TIMEZONE_MAPPINGS.put("Russian", "Europe/Moscow"); TIMEZONE_MAPPINGS.put("Russian Standard Time", "Europe/Moscow"); TIMEZONE_MAPPINGS.put("New Zealand", "Pacific/Auckland"); TIMEZONE_MAPPINGS.put("New Zealand Standard Time", "Pacific/Auckland"); TIMEZONE_MAPPINGS.put("Tonga Standard Time", "Pacific/Tongatapu"); TIMEZONE_MAPPINGS.put("Arabian", "Asia/Muscat"); TIMEZONE_MAPPINGS.put("Arabian Standard Time", "Asia/Muscat"); TIMEZONE_MAPPINGS.put("Caucasus", "Asia/Tbilisi"); TIMEZONE_MAPPINGS.put("Caucasus Standard Time", "Asia/Tbilisi"); TIMEZONE_MAPPINGS.put("GMT Standard Time", "GMT"); TIMEZONE_MAPPINGS.put("Greenwich", "GMT"); TIMEZONE_MAPPINGS.put("Greenwich Standard Time", "GMT"); } //~ Methods ............................................................... public static String getCanoncialTimezone(String timezoneStr) { if (timezoneStr == null) { return null; } timezoneStr = timezoneStr.trim(); // Fix windows Daylight/Standard shift JDK doesn"t map these (doh) String timezoneStrUC = timezoneStr.toUpperCase(); int daylightIndex = timezoneStrUC.indexOf("DAYLIGHT"); if (daylightIndex != -1) { StringBuffer timezoneBuf = new StringBuffer(); timezoneBuf.append(timezoneStr.substring(0, daylightIndex)); timezoneBuf.append("Standard"); timezoneBuf.append(timezoneStr.substring( daylightIndex + "DAYLIGHT".length(), timezoneStr.length())); timezoneStr = timezoneBuf.toString(); } return (String)TIMEZONE_MAPPINGS.get(timezoneStr); } public static Timestamp changeTimezone(Timestamp tstamp, TimeZone fromTz, TimeZone toTz) { /* // Convert the timestamp to the GMT timezone Calendar fromCal = Calendar.getInstance(fromTz); fromCal.setTime(tstamp); int fromOffset = fromCal.get(Calendar.ZONE_OFFSET) + fromCal.get(Calendar.DST_OFFSET); Calendar toCal = Calendar.getInstance(toTz); toCal.setTime(tstamp); int toOffset = toCal.get(Calendar.ZONE_OFFSET) + toCal.get(Calendar.DST_OFFSET); int offsetDiff = toOffset - fromOffset; long toTime = toCal.getTime().getTime(); toTime += offsetDiff; Timestamp changedTimestamp = new Timestamp(toTime); return changedTimestamp; */ return tstamp; } public static Time changeTimezone(Time t, TimeZone fromTz, TimeZone toTz) { /* // Convert the timestamp to the GMT timezone Calendar fromCal = Calendar.getInstance(fromTz); fromCal.setTime(t); int fromOffset = fromCal.get(Calendar.ZONE_OFFSET) + fromCal.get(Calendar.DST_OFFSET); Calendar toCal = Calendar.getInstance(toTz); toCal.setTime(t); int toOffset = toCal.get(Calendar.ZONE_OFFSET) + toCal.get(Calendar.DST_OFFSET); int offsetDiff = toOffset - fromOffset; long toTime = toCal.getTime().getTime(); toTime += offsetDiff; Time changedTime = new Time(toTime); return changedTime; */ return t; }
}
</source>
TimeZone.getTimeZone("America/New_York")
<source lang="java">
import java.util.Calendar; import java.util.TimeZone; public class Main {
public static void main(String[] args) { Calendar calNewYork = Calendar.getInstance(); calNewYork.setTimeZone(TimeZone.getTimeZone("America/New_York")); System.out.println("Time in New York: " + calNewYork.get(Calendar.HOUR_OF_DAY) + ":" + calNewYork.get(Calendar.MINUTE)); }
} //Time in New York: 11:51
</source>
TimeZone.getTimeZone("Asia/Tokyo")
<source lang="java">
import java.util.Calendar; import java.util.TimeZone; public class Main {
public static void main(String[] args) { Calendar calTokyo = Calendar.getInstance(); calTokyo.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo")); System.out.println("Time in Tokyo: " + calTokyo.get(Calendar.HOUR_OF_DAY) + ":" + calTokyo.get(Calendar.MINUTE)); }
} //Time in Tokyo: 1:51
</source>
TimeZone.getTimeZone("Europe/Paris")
<source lang="java">
import java.util.Calendar; import java.util.TimeZone; public class Main {
public static void main(String[] args) { Calendar calParis = Calendar.getInstance(); calParis.setTimeZone(TimeZone.getTimeZone("Europe/Paris")); System.out.println("Time in Paris: " + calParis.get(Calendar.HOUR_OF_DAY) + ":" + calParis.get(Calendar.MINUTE)); }
} //Time in Paris: 17:51
</source>
Using the Calendar Class to Display Current Time in Different Time Zones
<source lang="java">
import java.util.Calendar; import java.util.TimeZone; public class Main {
public static void main(String[] args) { Calendar calNewYork = Calendar.getInstance(); calNewYork.setTimeZone(TimeZone.getTimeZone("America/New_York")); System.out.println("Time in New York: " + calNewYork.get(Calendar.HOUR_OF_DAY) + ":" + calNewYork.get(Calendar.MINUTE)); }
} //Time in New York: 11:51
</source>