Soapui groovy date formats
Here are some examples of formating dates in soapui using groovy script.
Today is 6 october 2013, time 10:49 which can be expressed in iso 8601 'yyyy-mm-ddThh:mm:ss' 2013-10-06T22:49:50 as a local time in Amsterdam.
Adding the timezone 2013-10-06T22:49:50+02:00 is the same as time as 2013-10-06T20:49:50Z.
For more details see http://en.wikipedia.org/wiki/ISO_8601
// UTC
//
// If the time is in UTC, add a Z directly after the time without a space.
// Z is the zone designator for the zero UTC offset. "09:30 UTC" is therefore
// represented as "09:30Z" or "0930Z". "14:45:15 UTC" would be "14:45:15Z" or "144515Z".
//
// UTC time is also known as 'Zulu' time, since 'Zulu' is the NATO phonetic alphabet
// word for 'Z'.
//
// Time offsets from UTC
//
// The following times all refer to the same moment: "18:30Z", "22:30+04", "1130-0700",
// and "15:00-03:30". Nautical time zone letters are not used with the exception of Z.
// To calculate UTC time one has to subtract the offset from the local time, e.g.
// for "15:00-03:30" do 15:00 − (−03:30) to get 18:30 UTC.
//
// An offset of zero, in addition to having the special representation "Z", can also
// be stated numerically as "+00:00", "+0000", or "+00". However, it is not permitted
// to state it numerically with a negative sign, as "-00:00", "-0000", or "-00".
Default date formatting in Java Groovy
The Calendar class can be used for dates in groovy and Soapui.
For formatting it uses the java.util.SimpleDateFormatter.
The example uses different timezones and prints the value of the date.
import java.util.Calendar
import java.util.TimeZone
def printDate(zone){
Calendar cal = Calendar.getInstance(zone);
log.info "TimeZone =" + cal.getTimeZone().getID()
log.info "yyyy-MM-dd'T'HH:mm:ss =" + cal.format("yyyy-MM-dd'T'HH:mm:ss")
log.info "yyyy-MM-dd'T'HH:mm:ssz =" + cal.format("yyyy-MM-dd'T'HH:mm:ssz")
log.info "yyyy-MM-dd'T'HH:mm:ssZ =" + cal.format("yyyy-MM-dd'T'HH:mm:ssZ")
}
printDate( TimeZone.getTimeZone('GMT'))
printDate( TimeZone.getTimeZone('UTC'))
printDate( TimeZone.getDefault())
Output:
INFO:TimeZone =GMT
INFO:yyyy-MM-dd'T'HH:mm:ss =2013-10-06T20:49:50
INFO:yyyy-MM-dd'T'HH:mm:ssz =2013-10-06T20:49:50GMT
INFO:yyyy-MM-dd'T'HH:mm:ssZ =2013-10-06T20:49:50+0000
INFO:TimeZone =UTC
INFO:yyyy-MM-dd'T'HH:mm:ss =2013-10-06T20:49:50
INFO:yyyy-MM-dd'T'HH:mm:ssz =2013-10-06T20:49:50UTC
INFO:yyyy-MM-dd'T'HH:mm:ssZ =2013-10-06T20:49:50+0000
INFO:TimeZone =Europe/Amsterdam
INFO:yyyy-MM-dd'T'HH:mm:ss =2013-10-06T22:49:50
INFO:yyyy-MM-dd'T'HH:mm:ssz =2013-10-06T22:49:50CEST
INFO:yyyy-MM-dd'T'HH:mm:ssZ =2013-10-06T22:49:50+0200
Date format Zulu time in Java Groovy
Common use is a Zulu time format 2013-10-06T20:49:50Z as mentioned above.
To use this format set the TimeZone to Zulu and format the date.
import java.util.Calendar
import java.util.TimeZone
def printDate(zone){
Calendar cal = Calendar.getInstance(zone);
log.info "yyyy-MM-dd'T'HH:mm:ss =" + cal.format("yyyy-MM-dd'T'HH:mm:ssZ")
cal.setTimeZone(TimeZone.getTimeZone('Zulu'))
log.info "yyyy-MM-dd'T'HH:mm:ss'Z' =" + cal.format("yyyy-MM-dd'T'HH:mm:ss'Z'")
}
printDate( TimeZone.getDefault())
Output:
INFO:yyyy-MM-dd'T'HH:mm:ss =2013-10-07T20:44:27+0200
INFO:yyyy-MM-dd'T'HH:mm:ss'Z' =2013-10-07T18:44:27Z
XML datetype
The XML datatypes uses a colon in the timezone +0200 is used as +02:00.
Which is both permitted in ISO 8601.
// http://www.w3.org/TR/xmlschema-2/#built-in-primitive-datatypes
// 3.2.7.1 Lexical representation
// The lexical representation of a timezone is a string of
// the form: (('+' | '-') hh ':' mm) | 'Z', where
// '.' s+ (if present) represents the fractional seconds;
// zzzzzz (if present) represents the timezone (as described below).
// For example, 2002-10-10T12:00:00-05:00 (noon on 10 October 2002,
// Central Daylight Savings Time as well as Eastern Standard Time
// in the U.S.) is 2002-10-10T17:00:00Z, five hours later
// than 2002-10-10T12:00:00Z.
The java.util.SimpleDateFormatter class does not support ( untill java 7) the extra ':' in the timezone.
A workaround would be to add the extra ':'.
log.info "yyyy-MM-dd'T'HH:mm:ssZ =" + cal.format("yyyy-MM-dd'T'HH:mm:ssZ")
StringBuffer offset = new StringBuffer(cal.format("Z"))
offset.insert(3, ':')
log.info "yyyy-MM-dd'T'HH:MM:ss =" + cal.format("yyyy-MM-dd'T'HH:MM:ss") +offset
Output:
INFO:yyyy-MM-dd'T'HH:mm:ssZ =2013-10-07T20:44:27+0200
INFO:yyyy-MM-dd'T'HH:mm:ss =2013-10-07T20:44:27+02:00
Diferrent formatting depending on your java version
Through time the SimplDateFormatter had some modification on the timezone Flag.
The 'Z' was not supported in java < 1.4
SimpleDateFormat 1.3
z time zone (Text) Pacific Standard Time
Since java 1.4 'Z' is supported
SimpleDateFormat 1.4
SimpleDateFormat 1.5
SimpleDateFormat 6
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone RFC 822 time zone -0800
In java 7 xhe 'X' is added which should format the timezone as +08:00
SimpleDateFormat 7
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone RFC 822 time zone -0800
X Time zone ISO 8601 time zone -08; -0800; -08:00
Marshalling a java.util.Date object to a XML String
The next example of formating dates is to see how a java.util.Date object is formatted when serialized to xml.
To do this we use the Marshalling class and write a date object to a XMLString.
import java.io.StringWriter
import java.util.Date
import javax.xml.bind.JAXBElement
import javax.xml.bind.Marshaller
import javax.xml.bind.JAXBContext
import javax.xml.namespace.QName
StringWriter writer = new StringWriter();
JAXBContext jc = JAXBContext.newInstance();
Marshaller m = jc.createMarshaller();
Date value1 = new Date()
JAXBElement jx = new JAXBElement(new QName("date_example"), value1.getClass(), value1);
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(jx, writer);
log.info '' + writer
Output:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<date_example>2013-10-06T23:14:34.058+02:00</date_example>
The implementation of the date to XML parsing can be found in the class: com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl
RuntimeBuiltinLeafInfoImpl
// code duplicated from JAXP RI 1.3. See 6277586
private String format( String format, XMLGregorianCalendar value ) {
StringBuilder buf = new StringBuilder();
int fidx=0,flen=format.length();
while(fidx < flen) {
char fch = format.charAt(fidx++);
if(fch!='%') {// not a meta char
buf.append(fch);
continue;
}
switch(format.charAt(fidx++)) {
case 'Y':
printNumber(buf,value.getEonAndYear(), 4);
break;
case 'M':
printNumber(buf,value.getMonth(),2);
break;
case 'D':
printNumber(buf,value.getDay(),2);
break;
case 'h':
printNumber(buf,value.getHour(),2);
break;
case 'm':
printNumber(buf,value.getMinute(),2);
break;
case 's':
printNumber(buf, value.getSecond(),2);
if (value.getFractionalSecond() != null) {
String frac = value.getFractionalSecond().toPlainString();
//skip leading zero.
buf.append(frac.substring(1, frac.length()));
}
break;
case 'z':
int offset = value.getTimezone();
if(offset == 0) {
buf.append('Z');
} else if (offset != DatatypeConstants.FIELD_UNDEFINED) {
if(offset<0) {
buf.append('-');
offset *= -1;
} else {
buf.append('+');
}
printNumber(buf,offset/60,2);
buf.append(':');
printNumber(buf,offset%60,2);
}
break;
default:
throw new InternalError(); // impossible
}
}
return buf.toString();
}
Putting all together:
import java.util.Calendar
import java.util.Date
import java.util.TimeZone
def printDate(cal, zone){
cal.setTimeZone(zone)
log.info 'java.version = ' + System.getProperty("java.version")
log.info "TimeZone =" + cal.getTimeZone().getID()
log.info "yyyy-MM-dd'T'HH:mm:ss =" + cal.format("yyyy-MM-dd'T'HH:mm:ss")
log.info "yyyy-MM-dd'T'HH:mm:ssz =" + cal.format("yyyy-MM-dd'T'HH:mm:ssz")
log.info "yyyy-MM-dd'T'HH:mm:sszz =" + cal.format("yyyy-MM-dd'T'HH:mm:sszz")
log.info "yyyy-MM-dd'T'HH:mm:sszzzz =" + cal.format("yyyy-MM-dd'T'HH:mm:sszzzz")
log.info "yyyy-MM-dd'T'HH:mm:ssX =" + cal.format("yyyy-MM-dd'T'HH:mm:ssX")
log.info "yyyy-MM-dd'T'HH:mm:ssXX =" + cal.format("yyyy-MM-dd'T'HH:mm:ssXX")
log.info "yyyy-MM-dd'T'HH:mm:ssXXX =" + cal.format("yyyy-MM-dd'T'HH:mm:ssXXX")
log.info "yyyy-MM-dd'T'HH:mm:ssZ =" + cal.format("yyyy-MM-dd'T'HH:mm:ssZ")
log.info "yyyy-MM-dd'T'HH:mm:ssZZ =" + cal.format("yyyy-MM-dd'T'HH:mm:ssZZ")
log.info "EEE, dd MMM yyyy HH:mm:ss Z =" + cal.format("EEE, dd MMM yyyy HH:mm:ss Z")
// log.info "Z=" + cal.format("Z")
StringBuffer offset = new StringBuffer(cal.format("Z"))
offset.insert(3, ':')
// log.info "offset=" + offset
log.info "yyyy-MM-dd'T'HH:mm:ss+offset =" + cal.format("yyyy-MM-dd'T'HH:mm:ss") +offset
tz = cal.getTimeZone();
cal.setTimeZone(TimeZone.getTimeZone('Zulu'))
log.info "yyyy-MM-dd'T'HH:mm:ss'Z' =" + cal.format("yyyy-MM-dd'T'HH:mm:ss'Z'")
cal.setTimeZone(tz)
}
Calendar cal = Calendar.getInstance();
printDate(cal, TimeZone.getTimeZone('UTC'))
printDate(cal, TimeZone.getTimeZone('America/New_York'))
printDate(cal, TimeZone.getDefault())
log.info 'Wintertime'
cal.add( Calendar.MONTH, 2)
printDate(cal, TimeZone.getDefault())
Output:
INFO:java.version = 1.7.0_15
INFO:TimeZone =UTC
INFO:yyyy-MM-dd'T'HH:mm:ss =2013-10-07T21:35:30
INFO:yyyy-MM-dd'T'HH:mm:ssz =2013-10-07T21:35:30UTC
INFO:yyyy-MM-dd'T'HH:mm:sszz =2013-10-07T21:35:30UTC
INFO:yyyy-MM-dd'T'HH:mm:sszzzz =2013-10-07T21:35:30Coordinated Universal Time
INFO:yyyy-MM-dd'T'HH:mm:ssX =2013-10-07T21:35:30Z
INFO:yyyy-MM-dd'T'HH:mm:ssXX =2013-10-07T21:35:30Z
INFO:yyyy-MM-dd'T'HH:mm:ssXXX =2013-10-07T21:35:30Z
INFO:yyyy-MM-dd'T'HH:mm:ssZ =2013-10-07T21:35:30+0000
INFO:yyyy-MM-dd'T'HH:mm:ssZZ =2013-10-07T21:35:30+0000
INFO:EEE, dd MMM yyyy HH:mm:ss Z =Mon, 07 Oct 2013 21:35:30 +0000
INFO:yyyy-MM-dd'T'HH:mm:ss+offset =2013-10-07T21:35:30+00:00
INFO:yyyy-MM-dd'T'HH:mm:ss'Z' =2013-10-07T21:35:30Z
INFO:java.version = 1.7.0_15
INFO:TimeZone =America/New_York
INFO:yyyy-MM-dd'T'HH:mm:ss =2013-10-07T17:35:30
INFO:yyyy-MM-dd'T'HH:mm:ssz =2013-10-07T17:35:30EDT
INFO:yyyy-MM-dd'T'HH:mm:sszz =2013-10-07T17:35:30EDT
INFO:yyyy-MM-dd'T'HH:mm:sszzzz =2013-10-07T17:35:30Eastern Daylight Time
INFO:yyyy-MM-dd'T'HH:mm:ssX =2013-10-07T17:35:30-04
INFO:yyyy-MM-dd'T'HH:mm:ssXX =2013-10-07T17:35:30-0400
INFO:yyyy-MM-dd'T'HH:mm:ssXXX =2013-10-07T17:35:30-04:00
INFO:yyyy-MM-dd'T'HH:mm:ssZ =2013-10-07T17:35:30-0400
INFO:yyyy-MM-dd'T'HH:mm:ssZZ =2013-10-07T17:35:30-0400
INFO:EEE, dd MMM yyyy HH:mm:ss Z =Mon, 07 Oct 2013 17:35:30 -0400
INFO:yyyy-MM-dd'T'HH:mm:ss+offset =2013-10-07T17:35:30-04:00
INFO:yyyy-MM-dd'T'HH:mm:ss'Z' =2013-10-07T21:35:30Z
INFO:java.version = 1.7.0_15
INFO:TimeZone =Europe/Amsterdam
INFO:yyyy-MM-dd'T'HH:mm:ss =2013-10-07T23:35:30
INFO:yyyy-MM-dd'T'HH:mm:ssz =2013-10-07T23:35:30CEST
INFO:yyyy-MM-dd'T'HH:mm:sszz =2013-10-07T23:35:30CEST
INFO:yyyy-MM-dd'T'HH:mm:sszzzz =2013-10-07T23:35:30Central European Summer Time
INFO:yyyy-MM-dd'T'HH:mm:ssX =2013-10-07T23:35:30+02
INFO:yyyy-MM-dd'T'HH:mm:ssXX =2013-10-07T23:35:30+0200
INFO:yyyy-MM-dd'T'HH:mm:ssXXX =2013-10-07T23:35:30+02:00
INFO:yyyy-MM-dd'T'HH:mm:ssZ =2013-10-07T23:35:30+0200
INFO:yyyy-MM-dd'T'HH:mm:ssZZ =2013-10-07T23:35:30+0200
INFO:EEE, dd MMM yyyy HH:mm:ss Z =Mon, 07 Oct 2013 23:35:30 +0200
INFO:yyyy-MM-dd'T'HH:mm:ss+offset =2013-10-07T23:35:30+02:00
INFO:yyyy-MM-dd'T'HH:mm:ss'Z' =2013-10-07T21:35:30Z
INFO:Wintertime
INFO:java.version = 1.7.0_15
INFO:TimeZone =Europe/Amsterdam
INFO:yyyy-MM-dd'T'HH:mm:ss =2013-12-07T23:35:30
INFO:yyyy-MM-dd'T'HH:mm:ssz =2013-12-07T23:35:30CET
INFO:yyyy-MM-dd'T'HH:mm:sszz =2013-12-07T23:35:30CET
INFO:yyyy-MM-dd'T'HH:mm:sszzzz =2013-12-07T23:35:30Central European Time
INFO:yyyy-MM-dd'T'HH:mm:ssX =2013-12-07T23:35:30+01
INFO:yyyy-MM-dd'T'HH:mm:ssXX =2013-12-07T23:35:30+0100
INFO:yyyy-MM-dd'T'HH:mm:ssXXX =2013-12-07T23:35:30+01:00
INFO:yyyy-MM-dd'T'HH:mm:ssZ =2013-12-07T23:35:30+0100
INFO:yyyy-MM-dd'T'HH:mm:ssZZ =2013-12-07T23:35:30+0100
INFO:EEE, dd MMM yyyy HH:mm:ss Z =Sat, 07 Dec 2013 23:35:30 +0100
INFO:yyyy-MM-dd'T'HH:mm:ss+offset =2013-12-07T23:35:30+01:00
INFO:yyyy-MM-dd'T'HH:mm:ss'Z' =2013-12-07T22:35:30Z
Print AvailableIDs TimeZone
log.info "AvailableIDs TimeZone=" + TimeZone.getAvailableIDs()
output:
ACT,
AET,
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/Juba,
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,
AGT,
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_Banderas,
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/Creston,
America/Cuiaba,
America/Curacao,
America/Danmarkshavn,
America/Dawson_Creek,
America/Dawson,
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/Kralendijk,
America/La_Paz,
America/Lima,
America/Los_Angeles,
America/Louisville,
America/Lower_Princes,
America/Maceio,
America/Managua,
America/Manaus,
America/Marigot,
America/Martinique,
America/Matamoros,
America/Mazatlan,
America/Mendoza,
America/Menominee,
America/Merida,
America/Metlakatla,
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/Beulah,
America/North_Dakota/Center,
America/North_Dakota/New_Salem,
America/Ojinaga,
America/Panama,
America/Pangnirtung,
America/Paramaribo,
America/Phoenix,
America/Port_of_Spain,
America/Port-au-Prince,
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/Santa_Isabel,
America/Santarem,
America/Santiago,
America/Santo_Domingo,
America/Sao_Paulo,
America/Scoresbysund,
America/Shiprock,
America/Sitka,
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/Macquarie,
Antarctica/Mawson,
Antarctica/McMurdo,
Antarctica/Palmer,
Antarctica/Rothera,
Antarctica/South_Pole,
Antarctica/Syowa,
Antarctica/Vostok,
Arctic/Longyearbyen,
ART,
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/Hebron,
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/Kathmandu,
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/Novokuznetsk,
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,
AST,
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/North,
Australia/NSW,
Australia/Perth,
Australia/Queensland,
Australia/South,
Australia/Sydney,
Australia/Tasmania,
Australia/Victoria,
Australia/West,
Australia/Yancowinna,
BET,
Brazil/Acre,
Brazil/DeNoronha,
Brazil/East,
Brazil/West,
BST,
Canada/Atlantic,
Canada/Central,
Canada/East-Saskatchewan,
Canada/Eastern,
Canada/Mountain,
Canada/Newfoundland,
Canada/Pacific,
Canada/Saskatchewan,
Canada/Yukon,
CAT,
CET,
Chile/Continental,
Chile/EasterIsland,
CNT,
CST,
CST6CDT,
CTT,
Cuba,
EAT,
ECT,
EET,
Egypt,
Eire,
EST,
EST5EDT,
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/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/GMT0,
Etc/Greenwich,
Etc/UCT,
Etc/Universal,
Etc/UTC,
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-Eire,
GB,
GMT,
GMT0,
Greenwich,
Hongkong,
HST,
Iceland,
IET,
Indian/Antananarivo,
Indian/Chagos,
Indian/Christmas,
Indian/Cocos,
Indian/Comoro,
Indian/Kerguelen,
Indian/Mahe,
Indian/Maldives,
Indian/Mauritius,
Indian/Mayotte,
Indian/Reunion,
Iran,
Israel,
IST,
Jamaica,
Japan,
JST,
Kwajalein,
Libya,
MET,
Mexico/BajaNorte,
Mexico/BajaSur,
Mexico/General,
Mideast/Riyadh87,
Mideast/Riyadh88,
Mideast/Riyadh89,
MIT,
MST,
MST7MDT,
Navajo,
NET,
NST,
NZ-CHAT,
NZ,
Pacific/Apia,
Pacific/Auckland,
Pacific/Chatham,
Pacific/Chuuk,
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/Pohnpei,
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,
PLT,
PNT,
Poland,
Portugal,
PRC,
PRT,
PST,
PST8PDT,
ROK,
Singapore,
SST,
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,
Universal,
US/Alaska,
US/Aleutian,
US/Arizona,
US/Central,
US/East-Indiana,
US/Eastern,
US/Hawaii,
US/Indiana-Starke,
US/Michigan,
US/Mountain,
US/Pacific-New,
US/Pacific,
US/Samoa,
UTC,
VST,
W-SU,
WET,
Zulu,