Supertext Home
Chief of the System Blog

The .NET TimeZoneInfo GetSystemTimeZones() List

April 27th, 2012 by

The documentation for TimeZoneInfo.GetSystemTimeZones contains an nice example program that lists all the available Time Zones on your PC. Likely they are the same on most installations. Assuming you didn’t mess with the Registry. What the documenation does not do, is list all the different Time Zones, their Name or their properties. But here is the printout for your reference.

 

ID Dateline Standard Time
Display Name (UTC-12:00) International Date Line West
Standard Name Dateline Standard Time
Daylight Name Dateline Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC -12 hours, 0 minutes
Adjustment rules 0

ID UTC-11
Display Name (UTC-11:00) Coordinated Universal Time-11
Standard Name UTC-11
Daylight Name UTC-11
Does Not Have Daylight Saving Time
Offset from UTC -11 hours, 0 minutes
Adjustment rules 0

ID Hawaiian Standard Time
Display Name (UTC-10:00) Hawaii
Standard Name Hawaiian Standard Time
Daylight Name Hawaiian Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC -10 hours, 0 minutes
Adjustment rules 0

ID Alaskan Standard Time
Display Name (UTC-09:00) Alaska
Standard Name Alaskan Standard Time
Daylight Name Alaskan Daylight Time
Has Daylight Saving Time
Offset from UTC -9 hours, 0 minutes
Adjustment rules 2
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of April
Ends at 02:00 on Sunday of week 5 of Oktober
From 01.01.2007 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 2 of März
Ends at 02:00 on Sunday of week 1 of November

ID Pacific Standard Time (Mexico)
Display Name (UTC-08:00) Baja California
Standard Name Pacific Standard Time (Mexico)
Daylight Name Pacific Daylight Time (Mexico)
Has Daylight Saving Time
Offset from UTC -8 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of April
Ends at 02:00 on Sunday of week 5 of Oktober

ID Pacific Standard Time
Display Name (UTC-08:00) Pacific Time (US & Canada)
Standard Name Pacific Standard Time
Daylight Name Pacific Daylight Time
Has Daylight Saving Time
Offset from UTC -8 hours, 0 minutes
Adjustment rules 2
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of April
Ends at 02:00 on Sunday of week 5 of Oktober
From 01.01.2007 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 2 of März
Ends at 02:00 on Sunday of week 1 of November

ID US Mountain Standard Time
Display Name (UTC-07:00) Arizona
Standard Name US Mountain Standard Time
Daylight Name US Mountain Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC -7 hours, 0 minutes
Adjustment rules 0

ID Mountain Standard Time (Mexico)
Display Name (UTC-07:00) Chihuahua, La Paz, Mazatlan
Standard Name Mountain Standard Time (Mexico)
Daylight Name Mountain Daylight Time (Mexico)
Has Daylight Saving Time
Offset from UTC -7 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of April
Ends at 02:00 on Sunday of week 5 of Oktober

ID Mountain Standard Time
Display Name (UTC-07:00) Mountain Time (US & Canada)
Standard Name Mountain Standard Time
Daylight Name Mountain Daylight Time
Has Daylight Saving Time
Offset from UTC -7 hours, 0 minutes
Adjustment rules 2
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of April
Ends at 02:00 on Sunday of week 5 of Oktober
From 01.01.2007 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 2 of März
Ends at 02:00 on Sunday of week 1 of November

ID Central America Standard Time
Display Name (UTC-06:00) Central America
Standard Name Central America Standard Time
Daylight Name Central America Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC -6 hours, 0 minutes
Adjustment rules 0

ID Central Standard Time
Display Name (UTC-06:00) Central Time (US & Canada)
Standard Name Central Standard Time
Daylight Name Central Daylight Time
Has Daylight Saving Time
Offset from UTC -6 hours, 0 minutes
Adjustment rules 2
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of April
Ends at 02:00 on Sunday of week 5 of Oktober
From 01.01.2007 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 2 of März
Ends at 02:00 on Sunday of week 1 of November

ID Central Standard Time (Mexico)
Display Name (UTC-06:00) Guadalajara, Mexico City, Monterrey
Standard Name Central Standard Time (Mexico)
Daylight Name Central Daylight Time (Mexico)
Has Daylight Saving Time
Offset from UTC -6 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of April
Ends at 02:00 on Sunday of week 5 of Oktober

ID Canada Central Standard Time
Display Name (UTC-06:00) Saskatchewan
Standard Name Canada Central Standard Time
Daylight Name Canada Central Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC -6 hours, 0 minutes
Adjustment rules 0

ID SA Pacific Standard Time
Display Name (UTC-05:00) Bogota, Lima, Quito
Standard Name SA Pacific Standard Time
Daylight Name SA Pacific Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC -5 hours, 0 minutes
Adjustment rules 0

ID Eastern Standard Time
Display Name (UTC-05:00) Eastern Time (US & Canada)
Standard Name Eastern Standard Time
Daylight Name Eastern Daylight Time
Has Daylight Saving Time
Offset from UTC -5 hours, 0 minutes
Adjustment rules 2
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of April
Ends at 02:00 on Sunday of week 5 of Oktober
From 01.01.2007 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 2 of März
Ends at 02:00 on Sunday of week 1 of November

ID US Eastern Standard Time
Display Name (UTC-05:00) Indiana (East)
Standard Name US Eastern Standard Time
Daylight Name US Eastern Daylight Time
Has Daylight Saving Time
Offset from UTC -5 hours, 0 minutes
Adjustment rules 2
From 01.01.2006 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of April
Ends at 02:00 on Sunday of week 5 of Oktober
From 01.01.2007 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 2 of März
Ends at 02:00 on Sunday of week 1 of November

ID Venezuela Standard Time
Display Name (UTC-04:30) Caracas
Standard Name Venezuela Standard Time
Daylight Name Venezuela Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC -4 hours, -30 minutes
Adjustment rules 0

ID Paraguay Standard Time
Display Name (UTC-04:00) Asuncion
Standard Name Paraguay Standard Time
Daylight Name Paraguay Daylight Time
Has Daylight Saving Time
Offset from UTC -4 hours, 0 minutes
Adjustment rules 14
From 01.01.0001 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 2 of März
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 1 of März
From 01.01.2010 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 1 of Oktober
Ends at 23:59 on Saturday of week 2 of April
From 01.01.2011 00:00:00 to 31.12.2011 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 1 of Oktober
Ends at 23:59 on Saturday of week 2 of April
From 01.01.2012 00:00:00 to 31.12.2012 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 1 of Oktober
Ends at 23:59 on Saturday of week 1 of April
From 01.01.2013 00:00:00 to 31.12.2013 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 1 of Oktober
Ends at 23:59 on Saturday of week 2 of April
From 01.01.2014 00:00:00 to 31.12.2014 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 1 of Oktober
Ends at 23:59 on Saturday of week 2 of April
From 01.01.2015 00:00:00 to 31.12.2015 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 1 of Oktober
Ends at 23:59 on Saturday of week 2 of April
From 01.01.2016 00:00:00 to 31.12.2016 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 1 of Oktober
Ends at 23:59 on Saturday of week 2 of April
From 01.01.2017 00:00:00 to 31.12.2017 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of September
Ends at 23:59 on Saturday of week 2 of April
From 01.01.2018 00:00:00 to 31.12.2018 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 1 of Oktober
Ends at 23:59 on Saturday of week 1 of April
From 01.01.2019 00:00:00 to 31.12.2019 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 1 of Oktober
Ends at 23:59 on Saturday of week 2 of April
From 01.01.2020 00:00:00 to 31.12.2020 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 1 of Oktober
Ends at 23:59 on Saturday of week 2 of April
From 01.01.2021 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 1 of Oktober
Ends at 23:59 on Saturday of week 2 of April

ID Atlantic Standard Time
Display Name (UTC-04:00) Atlantic Time (Canada)
Standard Name Atlantic Standard Time
Daylight Name Atlantic Daylight Time
Has Daylight Saving Time
Offset from UTC -4 hours, 0 minutes
Adjustment rules 2
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of April
Ends at 02:00 on Sunday of week 5 of Oktober
From 01.01.2007 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 2 of März
Ends at 02:00 on Sunday of week 1 of November

ID Central Brazilian Standard Time
Display Name (UTC-04:00) Cuiaba
Standard Name Central Brazilian Standard Time
Daylight Name Central Brazilian Daylight Time
Has Daylight Saving Time
Offset from UTC -4 hours, 0 minutes
Adjustment rules 35
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 00:00 on Sunday of week 1 of November
Ends at 02:00 on Sunday of week 2 of Februar
From 01.01.2007 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 00:00 on Sunday of week 2 of Oktober
Ends at 00:00 on Sunday of week 5 of Februar
From 01.01.2008 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 00:00 on Sunday of week 3 of Februar
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 2 of Februar
From 01.01.2010 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2011 00:00:00 to 31.12.2011 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2012 00:00:00 to 31.12.2012 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 4 of Februar
From 01.01.2013 00:00:00 to 31.12.2013 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2014 00:00:00 to 31.12.2014 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2015 00:00:00 to 31.12.2015 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2016 00:00:00 to 31.12.2016 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2017 00:00:00 to 31.12.2017 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2018 00:00:00 to 31.12.2018 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2019 00:00:00 to 31.12.2019 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2020 00:00:00 to 31.12.2020 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2021 00:00:00 to 31.12.2021 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2022 00:00:00 to 31.12.2022 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2023 00:00:00 to 31.12.2023 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 4 of Februar
From 01.01.2024 00:00:00 to 31.12.2024 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2025 00:00:00 to 31.12.2025 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2026 00:00:00 to 31.12.2026 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2027 00:00:00 to 31.12.2027 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2028 00:00:00 to 31.12.2028 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2029 00:00:00 to 31.12.2029 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2030 00:00:00 to 31.12.2030 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2031 00:00:00 to 31.12.2031 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2032 00:00:00 to 31.12.2032 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 2 of Februar
From 01.01.2033 00:00:00 to 31.12.2033 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2034 00:00:00 to 31.12.2034 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 4 of Februar
From 01.01.2035 00:00:00 to 31.12.2035 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2036 00:00:00 to 31.12.2036 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2037 00:00:00 to 31.12.2037 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2038 00:00:00 to 31.12.2038 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2039 00:00:00 to 31.12.2039 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 4 of Februar
From 01.01.2040 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar

ID SA Western Standard Time
Display Name (UTC-04:00) Georgetown, La Paz, Manaus, San Juan
Standard Name SA Western Standard Time
Daylight Name SA Western Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC -4 hours, 0 minutes
Adjustment rules 0

ID Pacific SA Standard Time
Display Name (UTC-04:00) Santiago
Standard Name Pacific SA Standard Time
Daylight Name Pacific SA Daylight Time
Has Daylight Saving Time
Offset from UTC -4 hours, 0 minutes
Adjustment rules 6
From 01.01.0001 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 2 of März
From 01.01.2008 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 5 of März
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 2 of März
From 01.01.2010 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 1 of April
From 01.01.2011 00:00:00 to 31.12.2011 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of August
Ends at 23:59 on Saturday of week 1 of Mai
From 01.01.2012 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 2 of März

ID Newfoundland Standard Time
Display Name (UTC-03:30) Newfoundland
Standard Name Newfoundland Standard Time
Daylight Name Newfoundland Daylight Time
Has Daylight Saving Time
Offset from UTC -3 hours, -30 minutes
Adjustment rules 7
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 00:01 on Sunday of week 1 of April
Ends at 00:01 on Sunday of week 5 of Oktober
From 01.01.2007 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 00:01 on Sunday of week 2 of März
Ends at 00:01 on Sunday of week 1 of November
From 01.01.2008 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 00:01 on Sunday of week 2 of März
Ends at 00:01 on Sunday of week 1 of November
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 00:01 on Sunday of week 2 of März
Ends at 00:01 on Sunday of week 1 of November
From 01.01.2010 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 00:01 on Sunday of week 2 of März
Ends at 00:01 on Sunday of week 1 of November
From 01.01.2011 00:00:00 to 31.12.2011 00:00:00
Delta: 01:00:00
Begins at 00:01 on Sunday of week 2 of März
Ends at 02:00 on Sunday of week 1 of November
From 01.01.2012 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 2 of März
Ends at 02:00 on Sunday of week 1 of November

ID E. South America Standard Time
Display Name (UTC-03:00) Brasilia
Standard Name E. South America Standard Time
Daylight Name E. South America Daylight Time
Has Daylight Saving Time
Offset from UTC -3 hours, 0 minutes
Adjustment rules 35
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 00:00 on Sunday of week 1 of November
Ends at 02:00 on Sunday of week 2 of Februar
From 01.01.2007 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 00:00 on Sunday of week 2 of Oktober
Ends at 00:00 on Sunday of week 5 of Februar
From 01.01.2008 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 00:00 on Sunday of week 3 of Februar
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 2 of Februar
From 01.01.2010 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2011 00:00:00 to 31.12.2011 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2012 00:00:00 to 31.12.2012 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 4 of Februar
From 01.01.2013 00:00:00 to 31.12.2013 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2014 00:00:00 to 31.12.2014 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2015 00:00:00 to 31.12.2015 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2016 00:00:00 to 31.12.2016 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2017 00:00:00 to 31.12.2017 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2018 00:00:00 to 31.12.2018 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2019 00:00:00 to 31.12.2019 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2020 00:00:00 to 31.12.2020 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2021 00:00:00 to 31.12.2021 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2022 00:00:00 to 31.12.2022 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2023 00:00:00 to 31.12.2023 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 4 of Februar
From 01.01.2024 00:00:00 to 31.12.2024 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2025 00:00:00 to 31.12.2025 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2026 00:00:00 to 31.12.2026 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2027 00:00:00 to 31.12.2027 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2028 00:00:00 to 31.12.2028 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2029 00:00:00 to 31.12.2029 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2030 00:00:00 to 31.12.2030 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2031 00:00:00 to 31.12.2031 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2032 00:00:00 to 31.12.2032 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 2 of Februar
From 01.01.2033 00:00:00 to 31.12.2033 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2034 00:00:00 to 31.12.2034 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 4 of Februar
From 01.01.2035 00:00:00 to 31.12.2035 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2036 00:00:00 to 31.12.2036 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2037 00:00:00 to 31.12.2037 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2038 00:00:00 to 31.12.2038 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2039 00:00:00 to 31.12.2039 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 4 of Februar
From 01.01.2040 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar

ID Argentina Standard Time
Display Name (UTC-03:00) Buenos Aires
Standard Name Argentina Standard Time
Daylight Name Argentina Daylight Time
Has Daylight Saving Time
Offset from UTC -3 hours, 0 minutes
Adjustment rules 3
From 01.01.2007 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 00:00 on Sunday of week 5 of Dezember
Ends at 00:00 on Monday of week 1 of Januar
From 01.01.2008 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 00:00 on Sunday of week 3 of März
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 00:00 on Thursday of week 1 of Januar
Ends at 23:59 on Saturday of week 2 of März

ID SA Eastern Standard Time
Display Name (UTC-03:00) Cayenne, Fortaleza
Standard Name SA Eastern Standard Time
Daylight Name SA Eastern Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC -3 hours, 0 minutes
Adjustment rules 0

ID Greenland Standard Time
Display Name (UTC-03:00) Greenland
Standard Name Greenland Standard Time
Daylight Name Greenland Daylight Time
Has Daylight Saving Time
Offset from UTC -3 hours, 0 minutes
Adjustment rules 14
From 01.01.0001 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of April
Ends at 02:00 on Sunday of week 5 of Oktober
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 22:00 on Saturday of week 5 of März
Ends at 23:00 on Saturday of week 4 of Oktober
From 01.01.2010 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 22:00 on Saturday of week 5 of März
Ends at 23:00 on Saturday of week 5 of Oktober
From 01.01.2011 00:00:00 to 31.12.2011 00:00:00
Delta: 01:00:00
Begins at 22:00 on Saturday of week 5 of März
Ends at 23:00 on Saturday of week 5 of Oktober
From 01.01.2012 00:00:00 to 31.12.2012 00:00:00
Delta: 01:00:00
Begins at 22:00 on Saturday of week 4 of März
Ends at 23:00 on Saturday of week 5 of Oktober
From 01.01.2013 00:00:00 to 31.12.2013 00:00:00
Delta: 01:00:00
Begins at 22:00 on Saturday of week 5 of März
Ends at 23:00 on Saturday of week 5 of Oktober
From 01.01.2014 00:00:00 to 31.12.2014 00:00:00
Delta: 01:00:00
Begins at 22:00 on Saturday of week 5 of März
Ends at 23:00 on Saturday of week 5 of Oktober
From 01.01.2015 00:00:00 to 31.12.2015 00:00:00
Delta: 01:00:00
Begins at 22:00 on Saturday of week 5 of März
Ends at 23:00 on Saturday of week 4 of Oktober
From 01.01.2016 00:00:00 to 31.12.2016 00:00:00
Delta: 01:00:00
Begins at 22:00 on Saturday of week 5 of März
Ends at 23:00 on Saturday of week 5 of Oktober
From 01.01.2017 00:00:00 to 31.12.2017 00:00:00
Delta: 01:00:00
Begins at 22:00 on Saturday of week 5 of März
Ends at 23:00 on Saturday of week 5 of Oktober
From 01.01.2018 00:00:00 to 31.12.2018 00:00:00
Delta: 01:00:00
Begins at 22:00 on Saturday of week 4 of März
Ends at 23:00 on Saturday of week 5 of Oktober
From 01.01.2019 00:00:00 to 31.12.2019 00:00:00
Delta: 01:00:00
Begins at 22:00 on Saturday of week 5 of März
Ends at 23:00 on Saturday of week 5 of Oktober
From 01.01.2020 00:00:00 to 31.12.2020 00:00:00
Delta: 01:00:00
Begins at 22:00 on Saturday of week 5 of März
Ends at 23:00 on Saturday of week 4 of Oktober
From 01.01.2021 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 22:00 on Saturday of week 5 of März
Ends at 23:00 on Saturday of week 5 of Oktober

ID Montevideo Standard Time
Display Name (UTC-03:00) Montevideo
Standard Name Montevideo Standard Time
Daylight Name Montevideo Daylight Time
Has Daylight Saving Time
Offset from UTC -3 hours, 0 minutes
Adjustment rules 2
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 2 of September
Ends at 02:00 on Sunday of week 2 of März
From 01.01.2007 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of Oktober
Ends at 02:00 on Sunday of week 2 of März

ID Bahia Standard Time
Display Name (UTC-03:00) Salvador
Standard Name Bahia Standard Time
Daylight Name Bahia Daylight Time
Has Daylight Saving Time
Offset from UTC -3 hours, 0 minutes
Adjustment rules 30
From 01.01.2011 00:00:00 to 31.12.2011 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 00:00 on Saturday of week 1 of Januar
From 01.01.2012 00:00:00 to 31.12.2012 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 4 of Februar
From 01.01.2013 00:00:00 to 31.12.2013 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2014 00:00:00 to 31.12.2014 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2015 00:00:00 to 31.12.2015 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2016 00:00:00 to 31.12.2016 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2017 00:00:00 to 31.12.2017 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2018 00:00:00 to 31.12.2018 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2019 00:00:00 to 31.12.2019 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2020 00:00:00 to 31.12.2020 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2021 00:00:00 to 31.12.2021 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2022 00:00:00 to 31.12.2022 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2023 00:00:00 to 31.12.2023 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 4 of Februar
From 01.01.2024 00:00:00 to 31.12.2024 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2025 00:00:00 to 31.12.2025 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2026 00:00:00 to 31.12.2026 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2027 00:00:00 to 31.12.2027 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2028 00:00:00 to 31.12.2028 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2029 00:00:00 to 31.12.2029 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2030 00:00:00 to 31.12.2030 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2031 00:00:00 to 31.12.2031 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2032 00:00:00 to 31.12.2032 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 2 of Februar
From 01.01.2033 00:00:00 to 31.12.2033 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2034 00:00:00 to 31.12.2034 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 2 of Oktober
Ends at 23:59 on Saturday of week 4 of Februar
From 01.01.2035 00:00:00 to 31.12.2035 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2036 00:00:00 to 31.12.2036 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2037 00:00:00 to 31.12.2037 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2038 00:00:00 to 31.12.2038 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar
From 01.01.2039 00:00:00 to 31.12.2039 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 4 of Februar
From 01.01.2040 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of Oktober
Ends at 23:59 on Saturday of week 3 of Februar

ID UTC-02
Display Name (UTC-02:00) Coordinated Universal Time-02
Standard Name UTC-02
Daylight Name UTC-02
Does Not Have Daylight Saving Time
Offset from UTC -2 hours, 0 minutes
Adjustment rules 0

ID Mid-Atlantic Standard Time
Display Name (UTC-02:00) Mid-Atlantic
Standard Name Mid-Atlantic Standard Time
Daylight Name Mid-Atlantic Daylight Time
Has Daylight Saving Time
Offset from UTC -2 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 02:00 on Sunday of week 5 of September

ID Azores Standard Time
Display Name (UTC-01:00) Azores
Standard Name Azores Standard Time
Daylight Name Azores Daylight Time
Has Daylight Saving Time
Offset from UTC -1 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Cape Verde Standard Time
Display Name (UTC-01:00) Cape Verde Is.
Standard Name Cape Verde Standard Time
Daylight Name Cape Verde Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC -1 hours, 0 minutes
Adjustment rules 0

ID Morocco Standard Time
Display Name (UTC) Casablanca
Standard Name Morocco Standard Time
Daylight Name Morocco Daylight Time
Has Daylight Saving Time
Offset from UTC 0 hours, 0 minutes
Adjustment rules 4
From 01.01.2008 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of Mai
Ends at 23:59 on Sunday of week 5 of August
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 23:59 on Sunday of week 5 of Mai
Ends at 23:59 on Thursday of week 3 of August
From 01.01.2010 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 1 of Mai
Ends at 23:59 on Saturday of week 1 of August
From 01.01.2011 00:00:00 to 31.12.2011 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 1 of April
Ends at 23:59 on Saturday of week 5 of Juli

ID UTC
Display Name (UTC) Coordinated Universal Time
Standard Name Coordinated Universal Time
Daylight Name Coordinated Universal Time
Does Not Have Daylight Saving Time
Offset from UTC 0 hours, 0 minutes
Adjustment rules 0

ID GMT Standard Time
Display Name (UTC) Dublin, Edinburgh, Lisbon, London
Standard Name GMT Standard Time
Daylight Name GMT Daylight Time
Has Daylight Saving Time
Offset from UTC 0 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 01:00 on Sunday of week 5 of März
Ends at 02:00 on Sunday of week 5 of Oktober

ID Greenwich Standard Time
Display Name (UTC) Monrovia, Reykjavik
Standard Name Greenwich Standard Time
Daylight Name Greenwich Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 0 hours, 0 minutes
Adjustment rules 0

ID W. Europe Standard Time
Display Name (UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
Standard Name W. Europe Standard Time
Daylight Name W. Europe Daylight Time
Has Daylight Saving Time
Offset from UTC 1 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Central Europe Standard Time
Display Name (UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague
Standard Name Central Europe Standard Time
Daylight Name Central Europe Daylight Time
Has Daylight Saving Time
Offset from UTC 1 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Romance Standard Time
Display Name (UTC+01:00) Brussels, Copenhagen, Madrid, Paris
Standard Name Romance Standard Time
Daylight Name Romance Daylight Time
Has Daylight Saving Time
Offset from UTC 1 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Central European Standard Time
Display Name (UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb
Standard Name Central European Standard Time
Daylight Name Central European Daylight Time
Has Daylight Saving Time
Offset from UTC 1 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID W. Central Africa Standard Time
Display Name (UTC+01:00) West Central Africa
Standard Name W. Central Africa Standard Time
Daylight Name W. Central Africa Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 1 hours, 0 minutes
Adjustment rules 0

ID Namibia Standard Time
Display Name (UTC+01:00) Windhoek
Standard Name Namibia Standard Time
Daylight Name Namibia Daylight Time
Has Daylight Saving Time
Offset from UTC 1 hours, 0 minutes
Adjustment rules 2
From 01.01.0001 00:00:00 to 31.12.2010 00:00:00
Delta: -01:00:00
Begins at 02:00 on Sunday of week 1 of April
Ends at 02:00 on Sunday of week 1 of September
From 01.01.2011 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of September
Ends at 02:00 on Sunday of week 1 of April

ID Jordan Standard Time
Display Name (UTC+02:00) Amman
Standard Name Jordan Standard Time
Daylight Name Jordan Daylight Time
Has Daylight Saving Time
Offset from UTC 2 hours, 0 minutes
Adjustment rules 2
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 00:00 on Thursday of week 5 of März
Ends at 01:00 on Friday of week 5 of September
From 01.01.2007 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 5 of März
Ends at 01:00 on Friday of week 5 of Oktober

ID GTB Standard Time
Display Name (UTC+02:00) Athens, Bucharest
Standard Name GTB Standard Time
Daylight Name GTB Daylight Time
Has Daylight Saving Time
Offset from UTC 2 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 03:00 on Sunday of week 5 of März
Ends at 04:00 on Sunday of week 5 of Oktober

ID Middle East Standard Time
Display Name (UTC+02:00) Beirut
Standard Name Middle East Standard Time
Daylight Name Middle East Daylight Time
Has Daylight Saving Time
Offset from UTC 2 hours, 0 minutes
Adjustment rules 13
From 01.01.0001 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 00:00 on Sunday of week 5 of März
Ends at 00:00 on Sunday of week 5 of Oktober
From 01.01.2010 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of März
Ends at 23:59 on Saturday of week 5 of Oktober
From 01.01.2011 00:00:00 to 31.12.2011 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of März
Ends at 23:59 on Saturday of week 5 of Oktober
From 01.01.2012 00:00:00 to 31.12.2012 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 4 of März
Ends at 23:59 on Saturday of week 5 of Oktober
From 01.01.2013 00:00:00 to 31.12.2013 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of März
Ends at 23:59 on Saturday of week 5 of Oktober
From 01.01.2014 00:00:00 to 31.12.2014 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of März
Ends at 23:59 on Saturday of week 5 of Oktober
From 01.01.2015 00:00:00 to 31.12.2015 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of März
Ends at 23:59 on Saturday of week 4 of Oktober
From 01.01.2016 00:00:00 to 31.12.2016 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of März
Ends at 23:59 on Saturday of week 5 of Oktober
From 01.01.2017 00:00:00 to 31.12.2017 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of März
Ends at 23:59 on Saturday of week 5 of Oktober
From 01.01.2018 00:00:00 to 31.12.2018 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 4 of März
Ends at 23:59 on Saturday of week 5 of Oktober
From 01.01.2019 00:00:00 to 31.12.2019 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of März
Ends at 23:59 on Saturday of week 5 of Oktober
From 01.01.2020 00:00:00 to 31.12.2020 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of März
Ends at 23:59 on Saturday of week 4 of Oktober
From 01.01.2021 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of März
Ends at 23:59 on Saturday of week 5 of Oktober

ID Egypt Standard Time
Display Name (UTC+02:00) Cairo
Standard Name Egypt Standard Time
Daylight Name Egypt Daylight Time
Has Daylight Saving Time
Offset from UTC 2 hours, 0 minutes
Adjustment rules 6
From 01.01.0001 00:00:00 to 31.12.2005 00:00:00
Delta: 01:00:00
Begins at 00:00 on Friday of week 5 of April
Ends at 23:59 on Thursday of week 5 of September
From 01.01.2006 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 00:00 on Friday of week 5 of April
Ends at 23:59 on Thursday of week 3 of September
From 01.01.2007 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 5 of April
Ends at 23:59 on Thursday of week 1 of September
From 01.01.2008 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 5 of April
Ends at 23:59 on Thursday of week 5 of August
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 4 of April
Ends at 23:59 on Thursday of week 3 of August
From 01.01.2010 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 5 of April
Ends at 23:59 on Thursday of week 5 of September

ID Syria Standard Time
Display Name (UTC+02:00) Damascus
Standard Name Syria Standard Time
Daylight Name Syria Daylight Time
Has Daylight Saving Time
Offset from UTC 2 hours, 0 minutes
Adjustment rules 12
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 23:59 on Friday of week 5 of März
Ends at 23:59 on Wednesday of week 3 of September
From 01.01.2007 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 5 of März
Ends at 23:59 on Thursday of week 1 of November
From 01.01.2008 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 1 of April
Ends at 23:59 on Friday of week 5 of Oktober
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 5 of März
Ends at 23:59 on Thursday of week 5 of Oktober
From 01.01.2010 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 1 of April
Ends at 23:59 on Thursday of week 5 of Oktober
From 01.01.2011 00:00:00 to 31.12.2011 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 5 of März
Ends at 23:59 on Thursday of week 5 of Oktober
From 01.01.2012 00:00:00 to 31.12.2012 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 1 of April
Ends at 23:59 on Thursday of week 5 of Oktober
From 01.01.2013 00:00:00 to 31.12.2013 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 1 of April
Ends at 23:59 on Thursday of week 5 of Oktober
From 01.01.2014 00:00:00 to 31.12.2014 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 1 of April
Ends at 23:59 on Thursday of week 5 of Oktober
From 01.01.2015 00:00:00 to 31.12.2015 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 1 of April
Ends at 23:59 on Thursday of week 5 of Oktober
From 01.01.2016 00:00:00 to 31.12.2016 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 5 of März
Ends at 23:59 on Thursday of week 5 of Oktober
From 01.01.2017 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 1 of April
Ends at 23:59 on Thursday of week 5 of Oktober

ID South Africa Standard Time
Display Name (UTC+02:00) Harare, Pretoria
Standard Name South Africa Standard Time
Daylight Name South Africa Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 2 hours, 0 minutes
Adjustment rules 0

ID FLE Standard Time
Display Name (UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius
Standard Name FLE Standard Time
Daylight Name FLE Daylight Time
Has Daylight Saving Time
Offset from UTC 2 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 03:00 on Sunday of week 5 of März
Ends at 04:00 on Sunday of week 5 of Oktober

ID Turkey Standard Time
Display Name (UTC+02:00) Istanbul
Standard Name Turkey Standard Time
Daylight Name Turkey Daylight Time
Has Daylight Saving Time
Offset from UTC 2 hours, 0 minutes
Adjustment rules 3
From 01.01.0001 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 03:00 on Sunday of week 5 of März
Ends at 04:00 on Sunday of week 5 of Oktober
From 01.01.2011 00:00:00 to 31.12.2011 00:00:00
Delta: 01:00:00
Begins at 03:00 on Monday of week 5 of März
Ends at 04:00 on Sunday of week 5 of Oktober
From 01.01.2012 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 03:00 on Sunday of week 5 of März
Ends at 04:00 on Sunday of week 5 of Oktober

ID Israel Standard Time
Display Name (UTC+02:00) Jerusalem
Standard Name Jerusalem Standard Time
Daylight Name Jerusalem Daylight Time
Has Daylight Saving Time
Offset from UTC 2 hours, 0 minutes
Adjustment rules 18
From 01.01.2005 00:00:00 to 31.12.2005 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 1 of April
Ends at 02:00 on Sunday of week 2 of Oktober
From 01.01.2006 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 1 of Oktober
From 01.01.2007 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 3 of September
From 01.01.2008 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 1 of Oktober
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 5 of September
From 01.01.2010 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 2 of September
From 01.01.2011 00:00:00 to 31.12.2011 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 1 of April
Ends at 02:00 on Sunday of week 1 of Oktober
From 01.01.2012 00:00:00 to 31.12.2012 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 4 of September
From 01.01.2013 00:00:00 to 31.12.2013 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 2 of September
From 01.01.2014 00:00:00 to 31.12.2014 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 4 of September
From 01.01.2015 00:00:00 to 31.12.2015 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 3 of September
From 01.01.2016 00:00:00 to 31.12.2016 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 1 of April
Ends at 02:00 on Sunday of week 2 of Oktober
From 01.01.2017 00:00:00 to 31.12.2017 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 4 of September
From 01.01.2018 00:00:00 to 31.12.2018 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 3 of September
From 01.01.2019 00:00:00 to 31.12.2019 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 1 of Oktober
From 01.01.2020 00:00:00 to 31.12.2020 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 4 of September
From 01.01.2021 00:00:00 to 31.12.2021 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 5 of März
Ends at 02:00 on Sunday of week 2 of September
From 01.01.2022 00:00:00 to 31.12.2022 00:00:00
Delta: 01:00:00
Begins at 02:00 on Friday of week 1 of April
Ends at 02:00 on Sunday of week 1 of Oktober

ID E. Europe Standard Time
Display Name (UTC+02:00) Nicosia
Standard Name E. Europe Standard Time
Daylight Name E. Europe Daylight Time
Has Daylight Saving Time
Offset from UTC 2 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Arabic Standard Time
Display Name (UTC+03:00) Baghdad
Standard Name Arabic Standard Time
Daylight Name Arabic Daylight Time
Has Daylight Saving Time
Offset from UTC 3 hours, 0 minutes
Adjustment rules 2
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 03:00 on Sunday of week 1 of April
Ends at 04:00 on Sunday of week 1 of Oktober
From 01.01.2007 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 03:00 on Sunday of week 1 of April
Ends at 04:00 on Monday of week 1 of Oktober

ID Kaliningrad Standard Time
Display Name (UTC+03:00) Kaliningrad, Minsk
Standard Name Kaliningrad Standard Time
Daylight Name Kaliningrad Daylight Time
Has Daylight Saving Time
Offset from UTC 3 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Arab Standard Time
Display Name (UTC+03:00) Kuwait, Riyadh
Standard Name Arab Standard Time
Daylight Name Arab Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 3 hours, 0 minutes
Adjustment rules 0

ID E. Africa Standard Time
Display Name (UTC+03:00) Nairobi
Standard Name E. Africa Standard Time
Daylight Name E. Africa Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 3 hours, 0 minutes
Adjustment rules 0

ID Iran Standard Time
Display Name (UTC+03:30) Tehran
Standard Name Iran Standard Time
Daylight Name Iran Daylight Time
Has Daylight Saving Time
Offset from UTC 3 hours, 30 minutes
Adjustment rules 3
From 01.01.0001 00:00:00 to 31.12.2005 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of März
Ends at 02:00 on Tuesday of week 4 of September
From 01.01.2008 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 23:59 on Thursday of week 3 of März
Ends at 23:59 on Saturday of week 3 of September
From 01.01.2009 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 3 of März
Ends at 23:59 on Monday of week 3 of September

ID Arabian Standard Time
Display Name (UTC+04:00) Abu Dhabi, Muscat
Standard Name Arabian Standard Time
Daylight Name Arabian Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 4 hours, 0 minutes
Adjustment rules 0

ID Azerbaijan Standard Time
Display Name (UTC+04:00) Baku
Standard Name Azerbaijan Standard Time
Daylight Name Azerbaijan Daylight Time
Has Daylight Saving Time
Offset from UTC 4 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 04:00 on Sunday of week 5 of März
Ends at 05:00 on Sunday of week 5 of Oktober

ID Russian Standard Time
Display Name (UTC+04:00) Moscow, St. Petersburg, Volgograd
Standard Name Russian Standard Time
Daylight Name Russian Daylight Time
Has Daylight Saving Time
Offset from UTC 4 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Mauritius Standard Time
Display Name (UTC+04:00) Port Louis
Standard Name Mauritius Standard Time
Daylight Name Mauritius Daylight Time
Has Daylight Saving Time
Offset from UTC 4 hours, 0 minutes
Adjustment rules 2
From 01.01.2008 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of Oktober
Ends at 00:00 on Tuesday of week 1 of Januar
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 00:00 on Thursday of week 1 of Januar
Ends at 02:00 on Sunday of week 5 of März

ID Georgian Standard Time
Display Name (UTC+04:00) Tbilisi
Standard Name Georgian Standard Time
Daylight Name Georgian Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 4 hours, 0 minutes
Adjustment rules 0

ID Caucasus Standard Time
Display Name (UTC+04:00) Yerevan
Standard Name Caucasus Standard Time
Daylight Name Caucasus Daylight Time
Has Daylight Saving Time
Offset from UTC 4 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Afghanistan Standard Time
Display Name (UTC+04:30) Kabul
Standard Name Afghanistan Standard Time
Daylight Name Afghanistan Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 4 hours, 30 minutes
Adjustment rules 0

ID Pakistan Standard Time
Display Name (UTC+05:00) Islamabad, Karachi
Standard Name Pakistan Standard Time
Daylight Name Pakistan Daylight Time
Has Daylight Saving Time
Offset from UTC 5 hours, 0 minutes
Adjustment rules 2
From 01.01.2008 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of Mai
Ends at 23:59 on Friday of week 5 of Oktober
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 23:59 on Tuesday of week 2 of April
Ends at 23:59 on Saturday of week 5 of Oktober

ID West Asia Standard Time
Display Name (UTC+05:00) Tashkent
Standard Name West Asia Standard Time
Daylight Name West Asia Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 5 hours, 0 minutes
Adjustment rules 0

ID India Standard Time
Display Name (UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi
Standard Name India Standard Time
Daylight Name India Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 5 hours, 30 minutes
Adjustment rules 0

ID Sri Lanka Standard Time
Display Name (UTC+05:30) Sri Jayawardenepura
Standard Name Sri Lanka Standard Time
Daylight Name Sri Lanka Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 5 hours, 30 minutes
Adjustment rules 0

ID Nepal Standard Time
Display Name (UTC+05:45) Kathmandu
Standard Name Nepal Standard Time
Daylight Name Nepal Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 5 hours, 45 minutes
Adjustment rules 0

ID Central Asia Standard Time
Display Name (UTC+06:00) Astana
Standard Name Central Asia Standard Time
Daylight Name Central Asia Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 6 hours, 0 minutes
Adjustment rules 0

ID Bangladesh Standard Time
Display Name (UTC+06:00) Dhaka
Standard Name Bangladesh Standard Time
Daylight Name Bangladesh Daylight Time
Has Daylight Saving Time
Offset from UTC 6 hours, 0 minutes
Adjustment rules 1
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 23:00 on Friday of week 3 of Juni
Ends at 23:59 on Thursday of week 5 of Dezember

ID Ekaterinburg Standard Time
Display Name (UTC+06:00) Ekaterinburg
Standard Name Ekaterinburg Standard Time
Daylight Name Ekaterinburg Daylight Time
Has Daylight Saving Time
Offset from UTC 6 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Myanmar Standard Time
Display Name (UTC+06:30) Yangon (Rangoon)
Standard Name Myanmar Standard Time
Daylight Name Myanmar Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 6 hours, 30 minutes
Adjustment rules 0

ID SE Asia Standard Time
Display Name (UTC+07:00) Bangkok, Hanoi, Jakarta
Standard Name SE Asia Standard Time
Daylight Name SE Asia Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 7 hours, 0 minutes
Adjustment rules 0

ID N. Central Asia Standard Time
Display Name (UTC+07:00) Novosibirsk
Standard Name N. Central Asia Standard Time
Daylight Name N. Central Asia Daylight Time
Has Daylight Saving Time
Offset from UTC 7 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID China Standard Time
Display Name (UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi
Standard Name China Standard Time
Daylight Name China Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 8 hours, 0 minutes
Adjustment rules 0

ID North Asia Standard Time
Display Name (UTC+08:00) Krasnoyarsk
Standard Name North Asia Standard Time
Daylight Name North Asia Daylight Time
Has Daylight Saving Time
Offset from UTC 8 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Singapore Standard Time
Display Name (UTC+08:00) Kuala Lumpur, Singapore
Standard Name Malay Peninsula Standard Time
Daylight Name Malay Peninsula Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 8 hours, 0 minutes
Adjustment rules 0

ID W. Australia Standard Time
Display Name (UTC+08:00) Perth
Standard Name W. Australia Standard Time
Daylight Name W. Australia Daylight Time
Has Daylight Saving Time
Offset from UTC 8 hours, 0 minutes
Adjustment rules 4
From 01.01.2006 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of Dezember
Ends at 00:00 on Sunday of week 1 of Januar
From 01.01.2007 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of Oktober
Ends at 03:00 on Sunday of week 5 of März
From 01.01.2008 00:00:00 to 31.12.2008 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of Oktober
Ends at 03:00 on Sunday of week 5 of März
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 00:00 on Thursday of week 1 of Januar
Ends at 03:00 on Sunday of week 5 of März

ID Taipei Standard Time
Display Name (UTC+08:00) Taipei
Standard Name Taipei Standard Time
Daylight Name Taipei Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 8 hours, 0 minutes
Adjustment rules 0

ID Ulaanbaatar Standard Time
Display Name (UTC+08:00) Ulaanbaatar
Standard Name Ulaanbaatar Standard Time
Daylight Name Ulaanbaatar Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 8 hours, 0 minutes
Adjustment rules 0

ID North Asia East Standard Time
Display Name (UTC+09:00) Irkutsk
Standard Name North Asia East Standard Time
Daylight Name North Asia East Daylight Time
Has Daylight Saving Time
Offset from UTC 9 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Tokyo Standard Time
Display Name (UTC+09:00) Osaka, Sapporo, Tokyo
Standard Name Tokyo Standard Time
Daylight Name Tokyo Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 9 hours, 0 minutes
Adjustment rules 0

ID Korea Standard Time
Display Name (UTC+09:00) Seoul
Standard Name Korea Standard Time
Daylight Name Korea Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 9 hours, 0 minutes
Adjustment rules 0

ID Cen. Australia Standard Time
Display Name (UTC+09:30) Adelaide
Standard Name Cen. Australia Standard Time
Daylight Name Cen. Australia Daylight Time
Has Daylight Saving Time
Offset from UTC 9 hours, 30 minutes
Adjustment rules 2
From 01.01.0001 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of Oktober
Ends at 03:00 on Sunday of week 5 of März
From 01.01.2008 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of Oktober
Ends at 03:00 on Sunday of week 1 of April

ID AUS Central Standard Time
Display Name (UTC+09:30) Darwin
Standard Name AUS Central Standard Time
Daylight Name AUS Central Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 9 hours, 30 minutes
Adjustment rules 0

ID E. Australia Standard Time
Display Name (UTC+10:00) Brisbane
Standard Name E. Australia Standard Time
Daylight Name E. Australia Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 10 hours, 0 minutes
Adjustment rules 0

ID AUS Eastern Standard Time
Display Name (UTC+10:00) Canberra, Melbourne, Sydney
Standard Name AUS Eastern Standard Time
Daylight Name AUS Eastern Daylight Time
Has Daylight Saving Time
Offset from UTC 10 hours, 0 minutes
Adjustment rules 2
From 01.01.0001 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of Oktober
Ends at 03:00 on Sunday of week 5 of März
From 01.01.2008 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of Oktober
Ends at 03:00 on Sunday of week 1 of April

ID West Pacific Standard Time
Display Name (UTC+10:00) Guam, Port Moresby
Standard Name West Pacific Standard Time
Daylight Name West Pacific Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 10 hours, 0 minutes
Adjustment rules 0

ID Tasmania Standard Time
Display Name (UTC+10:00) Hobart
Standard Name Tasmania Standard Time
Daylight Name Tasmania Daylight Time
Has Daylight Saving Time
Offset from UTC 10 hours, 0 minutes
Adjustment rules 2
From 01.01.0001 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of Oktober
Ends at 03:00 on Sunday of week 5 of März
From 01.01.2008 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of Oktober
Ends at 03:00 on Sunday of week 1 of April

ID Yakutsk Standard Time
Display Name (UTC+10:00) Yakutsk
Standard Name Yakutsk Standard Time
Daylight Name Yakutsk Daylight Time
Has Daylight Saving Time
Offset from UTC 10 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Central Pacific Standard Time
Display Name (UTC+11:00) Solomon Is., New Caledonia
Standard Name Central Pacific Standard Time
Daylight Name Central Pacific Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 11 hours, 0 minutes
Adjustment rules 0

ID Vladivostok Standard Time
Display Name (UTC+11:00) Vladivostok
Standard Name Vladivostok Standard Time
Daylight Name Vladivostok Daylight Time
Has Daylight Saving Time
Offset from UTC 11 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID New Zealand Standard Time
Display Name (UTC+12:00) Auckland, Wellington
Standard Name New Zealand Standard Time
Daylight Name New Zealand Daylight Time
Has Daylight Saving Time
Offset from UTC 12 hours, 0 minutes
Adjustment rules 3
From 01.01.0001 00:00:00 to 31.12.2006 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 1 of Oktober
Ends at 03:00 on Sunday of week 3 of März
From 01.01.2007 00:00:00 to 31.12.2007 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of September
Ends at 03:00 on Sunday of week 3 of März
From 01.01.2008 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of September
Ends at 03:00 on Sunday of week 1 of April

ID UTC+12
Display Name (UTC+12:00) Coordinated Universal Time+12
Standard Name UTC+12
Daylight Name UTC+12
Does Not Have Daylight Saving Time
Offset from UTC 12 hours, 0 minutes
Adjustment rules 0

ID Fiji Standard Time
Display Name (UTC+12:00) Fiji
Standard Name Fiji Standard Time
Daylight Name Fiji Daylight Time
Has Daylight Saving Time
Offset from UTC 12 hours, 0 minutes
Adjustment rules 5
From 01.01.2009 00:00:00 to 31.12.2009 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of November
Ends at 00:00 on Thursday of week 1 of Januar
From 01.01.2010 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 4 of Oktober
Ends at 03:00 on Sunday of week 5 of März
From 01.01.2011 00:00:00 to 31.12.2011 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 4 of Oktober
Ends at 03:00 on Sunday of week 1 of März
From 01.01.2012 00:00:00 to 31.12.2012 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 4 of Oktober
Ends at 03:00 on Sunday of week 4 of Januar
From 01.01.2013 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 4 of Oktober
Ends at 03:00 on Sunday of week 1 of März

ID Magadan Standard Time
Display Name (UTC+12:00) Magadan
Standard Name Magadan Standard Time
Daylight Name Magadan Daylight Time
Has Daylight Saving Time
Offset from UTC 12 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Kamchatka Standard Time
Display Name (UTC+12:00) Petropavlovsk-Kamchatsky – Old
Standard Name Kamchatka Standard Time
Daylight Name Kamchatka Daylight Time
Has Daylight Saving Time
Offset from UTC 12 hours, 0 minutes
Adjustment rules 1
From 01.01.0001 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 02:00 on Sunday of week 5 of März
Ends at 03:00 on Sunday of week 5 of Oktober

ID Tonga Standard Time
Display Name (UTC+13:00) Nuku’alofa
Standard Name Tonga Standard Time
Daylight Name Tonga Daylight Time
Does Not Have Daylight Saving Time
Offset from UTC 13 hours, 0 minutes
Adjustment rules 0

ID Samoa Standard Time
Display Name (UTC+13:00) Samoa
Standard Name Samoa Standard Time
Daylight Name Samoa Daylight Time
Has Daylight Saving Time
Offset from UTC 13 hours, 0 minutes
Adjustment rules 2
From 01.01.2010 00:00:00 to 31.12.2010 00:00:00
Delta: 01:00:00
Begins at 23:59 on Saturday of week 5 of September
Ends at 00:00 on Friday of week 1 of Januar
From 01.01.2011 00:00:00 to 31.12.9999 00:00:00
Delta: 01:00:00
Begins at 00:00 on Sunday of week 5 of September
Ends at 01:00 on Sunday of week 1 of April

 

Hope this helped a few people.


Basic Http Authorization for Web API in MVC 4 Beta

April 19th, 2012 by

A little while ago I posted a solution to do Basic Http Authorization with the Web API Preview 6. Web API got then merged into the next ASP.NET MVC 4 Beta Release and in the process has changed a lot.

Since my old approach did not work anymore, I had to create something new.

 

Usage:

public class OrderController : ApiController
{
    // GET /api/orders/5
    [BasicHttpAuthorizeAttribute(RequireAuthentication = true)]
    public string Get(int id, string communicationLang)
    {
        //do your API Stuff
    }
}

And the Authentication class itself:

public class BasicHttpAuthorizeAttribute : System.Web.Http.AuthorizeAttribute  
{
    bool requireSsl = Convert.ToBoolean(ConfigurationManager.AppSettings["RequireSsl"]);
 
    public bool RequireSsl
    {
        get { return requireSsl; }
        set { requireSsl = value; }
    }
 
 
    bool requireAuthentication = true;
 
    public bool RequireAuthentication
    {
        get { return requireAuthentication; }
        set { requireAuthentication = value; }
    }
 
 
    /// <summary>
    /// For logging with Log4net.
    /// </summary>
    private static readonly ILog log = LogManager.GetLogger(typeof(BasicHttpAuthorizeAttribute));
 
 
    public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)        
    {
        //actionContext.Request
 
        if (Authenticate(actionContext) || !RequireAuthentication)
        {
            return;
        }
        else
        {
            HandleUnauthorizedRequest(actionContext);
        }
    }
 
    protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        var challengeMessage = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized);
        challengeMessage.Headers.Add("WWW-Authenticate", "Basic");
        throw new HttpResponseException(challengeMessage);
        //throw new HttpResponseException();
    }
 
 
    private bool Authenticate(System.Web.Http.Controllers.HttpActionContext actionContext) //HttpRequestMessage input)
    {
        if (RequireSsl && !HttpContext.Current.Request.IsSecureConnection && !HttpContext.Current.Request.IsLocal)
        {
            log.Error("Failed to login: SSL:" + HttpContext.Current.Request.IsSecureConnection);
            return false;
        }
 
        if (!HttpContext.Current.Request.Headers.AllKeys.Contains("Authorization")) return false;
 
        string authHeader = HttpContext.Current.Request.Headers["Authorization"];
 
        IPrincipal principal;
        if (TryGetPrincipal(authHeader, out principal))
        {
            HttpContext.Current.User = principal;
            return true;
        }
        return false;
    }
 
 
    private bool TryGetPrincipal(string authHeader, out IPrincipal principal)
    {
        var creds = ParseAuthHeader(authHeader);
        if (creds != null)
        {
            if (TryGetPrincipal(creds[0], creds[1], out principal)) return true;
        }
 
        principal = null;
        return false;
    }
 
 
    private string[] ParseAuthHeader(string authHeader)
    {
        // Check this is a Basic Auth header 
        if (authHeader == null || authHeader.Length == 0 || !authHeader.StartsWith("Basic")) return null;
 
        // Pull out the Credentials with are seperated by ':' and Base64 encoded 
        string base64Credentials = authHeader.Substring(6);
        string[] credentials = Encoding.ASCII.GetString(Convert.FromBase64String(base64Credentials)).Split(new char[] { ':' });
 
        if (credentials.Length != 2 || string.IsNullOrEmpty(credentials[0]) || string.IsNullOrEmpty(credentials[0])) return null;
 
        // Okay this is the credentials 
        return credentials;
    }
 
 
    private bool TryGetPrincipal(string username, string password, out IPrincipal principal)
    {
        // this is the method that does the authentication 
 
        //users often add a copy/paste space at the end of the username
        username = username.Trim();
        password = password.Trim();
 
        //TODO
        //Replace this with your own Authentication Code
        Person person = AccountManagement.ApiLogin(username, password);
 
        if (person != null)
        {
            // once the user is verified, assign it to an IPrincipal with the identity name and applicable roles
            principal = new GenericPrincipal(new GenericIdentity(username), System.Web.Security.Roles.GetRolesForUser(username));
            return true;
        }
        else
        {
            if (!String.IsNullOrWhiteSpace(username))
            {
                log.Error("Failed to login: username=" + username + "; password=" + password);
            }
            principal = null;
            return false;
        }
    }
}

You will have to adjust the TryGetPrincipal() method to include our own Authorization code that works with your system. Or maybe plain normal ASP.NET Provider Authentication is enough in your case.


Content Export from Contao

April 5th, 2012 by

We have multiple customers that are using Contao CMS (formerly TYPOlight). Unfortunately there is no good export/import tool to get the content in and out for translations. We have a plugin for Drupal and Typo3. WordPress is in development, Contao in the evaluation phase.

In the meantime what we often get are Microsoft Word files. This works perfectly for us, but is cumbersome for the client. We recommend to send us the raw HTML code. This way there is no copy&paste and modify necessary. All formats stay as the were.

image

Click on the HTML button in the Contao Editor Toolbar (as seen above). This will open the plain text HTML editor.

image

Just copy&paste this text into a normal text file and send it to us.

 

You will get it back in the exact same format and everything you have to do, is paste it back into this editor. Done.

 

If you need to translate multiple pages or your whole website, we can export all your pages automatically and reimport them again afterwards. This involves no manual work for you at all. Just contact us.


Install the Translation Management Tool for Drupal

February 29th, 2012 by

First, you have to download the following modules:

 

Translation Management Tool (the most important part)

http://drupal.org/project/tmgmt

 

Entity API (the latest dev version)

http://drupal.org/project/entity

 

Chaos tool suite (ctools)

http://drupal.org/project/ctools

 

Views (3.3 or newer)

http://drupal.org/project/views

 

Views Bulk Operations (VBO)

http://drupal.org/project/views_bulk_operations

 

Internationalization

http://drupal.org/project/i18n

Which turn needs the Variable module:

http://drupal.org/project/variable

 

Rules

http://drupal.org/project/rules

 

You can either install these modules via Administration –> Modules or by copying them into /yourwebsite/sites/all/modules.

 

Now, go to back to Administration –> Modules.

Here you need to enable the following parts:

 

Core

  • Content translation
  • Locale

 

Chaos tool suite

  • Chaos tools

 

Multilingual – Internationalization

  • Internationalization
  • Multilingual content
  • String translation
  • Variable translation

 

Other

  • Entity API
  • Entity tokens
  • Variable

 

Rules

  • Rules
  • Rules UI

 

Translation Management

  • Content Source
  • Content Source User Interface
  • Entity Source
  • Microsoft Translator
  • Supertext Translator
  • Translation Management Core
  • Translation Management Field
  • Translation Management UI

 

Views

  • Views
  • Views Bulk Operations
  • Views UI

 

A good starting tutorial to configure Drupal for Multilingual Content is here: http://drupal.org/node/1268692

 

But there are mainly two core things to configure

First: You have to add multiple languages.

Go to:

Home » Administration » Configuration » Regional and language
And add one or two languages.

 

Second: Configure your content to be translatable.

Go to:

Home » Administration » Structure » Content types
Click on either “Article” or “Basic page” » edit and then choose “Publishing options”.

image

Select “Enabled, with translation” and then switch to “Multilingual settings” and configure accordingly.

 

Now you should be ready!

Add some content and you should see the “Translate” tab besides View and Edit.

image

 

But first you have to configure a translator.

For testing the Microsoft translator is perfect. Go to:

Home » Administration » Configuration » Regional and language » Translation Management
And click on edit by the Microsoft translator. Add your API key (you can get it from the link below the textbox).

Let’s go back to your content page and click in Translate.

image

We need a German translation and then click on “Request translation” (add translation is if you want to translate it manually).

image

In the Translator dropdown we choose Microsoft translator. And then click on “Submit to translator”.

Since this is a machine translation, we get the result immediately.

image

Click on “Needs review” under “Pending Translations” and just accept the translation.

Done!


The Supertext REST API

February 22nd, 2012 by

What?

In the early days, the internet solely consisted of simple static webpages. With the Dot-Com boom (or bubble), the webpages changed into complex and dynamic applications. But they were all like islands. There was no connection whatsoever between them. But now, companies like Facebook and Twitter loosened up and enable other people to build applications, allowing to connect to them and add their own functionality.

Until now, Supertext has – besides some specific integrations – been an island too. But that’s over now. We have an open and public API allowing other applications to directly integrate with Supertext.

 

Why?

Who wants to integrate with Supertext you wonder? And why? Actually, lots of people. It started 4 years ago with Akero, a now defunct CMS system. Akero users were able to directly order translations and text editing from inside their CMS and got the final text delivered back into it. Clearly, this wasn’t enough to make Akero a success, but the need to order directly from 3rd party systems remained evident until today.

 

How?

Now it gets a bit technical. The Supertext API is built as a REST API that understands JSON or XML. Almost all modern open APIs are built alike. This means that they’re accessible with normal HTTP calls and they enable you to send and receive human readable JSON or XML messages.

 

Who?

Authentication is done via normal Basic HTTP Authentication. Most other APIs just use a token or your username and password. We decided to work with a username in combination with a custom token. You can get this token from your Supertext Account Settings page. If you don’t have a Supertext account, you can establish one on the sign up page.

 

Where?

Please send an e-mail to remyATsupertextDOTch and I will send you the URL for the sandbox and the live system.

 

Which?

Currently we support the functionality listed below, basically you can get quotes and make orders.

You can add the below parameter to most calls, to specify in what language you get the results back:

communicationlang={communicationlang}

Adding it is optional. Otherwise the response defaults to English.  We currently support CHF and EUR. For a quote you can choose between the two currencies, but if you create an order, whatever is set in your account will be used.

 

For the configuration

/translation/languagemapping/{language}

GET – No authentication necessary.

Helps you map a language in your system to one we support.

E.g. your CMS is setup for ‘de’ (German). We don’t actually translate into German, we translate into German for Switzerland, for Germany or for Austria. So this method returns you a list of possible matches. For {language} = ‘de’ the result would look like this:

{
  "Languages":
  [
    {
      "Iso":"de-CH",
      "Name":"German (CH)"
    },
    {
      "Iso":"de-DE",
      "Name":"German (DE)"
    },
    {
      "Iso":"de-AT",
      "Name":"German (AT)"
    }
  ],
  "Supported":false
}

 

To get a quote

/translation/quote

POST – authentication optional

Getting a quote over the API works in pretty much the same way as if you were using our normal website to order a translation (give it a try). Send us the text and in return, you see a list of possible delivery deadlines and prices per service levels  (translation/adaptation). You can send us the content structured in groups and items, which is helpful if you have CMS that is built that way. E.g. a group could be a page, items are title, content, metatags and so on. The following is a possible JSON for this call:

{
  "ContentType":"text\/html",
  "Currency":"chf",
  "Groups":
  [
    {
      "GroupId":"Group1",
      "Items":
      [
        {
          "Content":"This is the content of group 1",
          "Id":"1"
        },
        {
          "Content":"This is more content  of group 1",
          "Id":"2"
        }
      ]
    },
    {
      "GroupId":"Group2",
      "Items":
      [
        {
          "Content":"This is the content  of group 2",
          "Id":"1"
        },
        {
          "Content":"This is more content  of group 2",
          "Id":"2"
        }
      ]
    }
  ],
  "SourceLang":"de-CH",
  "TargetLang":"en-US",
}

 

And this could be what you get in return:

 

{
  "Currency":"CHF",
  "WordCount": 123,
  "Options":
  [
    {
      "DeliveryOptions":
      [
        {
          "DeliveryDate":"2012-02-22T09:25:46.0000000Z",
          "DeliveryId":1,
          "Name":"6h",
          "Price":124
        },
        {
          "DeliveryDate":"2012-02-22T15:25:46.0000000Z0",
          "DeliveryId":2,
          "Name":"24h",
          "Price":110
        },
        {
          "DeliveryDate":"2012-02-23T15:25:46.0000000Z",
          "DeliveryId":3,
          "Name":"48h",
          "Price":96
        },
        {
          "DeliveryDate":"2012-02-24T15:25:46.0000000Z",
          "DeliveryId":4,
          "Name":"3 Days",
          "Price":82
        },
        {
          "DeliveryDate":"2012-02-28T15:25:46.0000000Z",
          "DeliveryId":5,
          "Name":"1 Week",
          "Price":69
        }
      ],
      "Description":"For an exact reproduction of the original text, the translated text is checked by a proofreader.",
      "Name":"Translation",
      "OrderTypeId":6,
      "ShortDescription":"4-eye principle."
    },
    {
      "DeliveryOptions":
      [
        {
          "DeliveryDate":"2012-02-22T15:25:46.0000000Z",
          "DeliveryId":2,
          "Name":"24h",
          "Price":254
        },
        {
          "DeliveryDate":"2012-02-23T15:25:46.0000000Z",
          "DeliveryId":3,
          "Name":"48h",
          "Price":222
        },
        {
          "DeliveryDate":"2012-02-24T15:25:46.0000000Z",
          "DeliveryId":4,
          "Name":"3 Days",
          "Price":190
        },
        {
          "DeliveryDate":"2012-02-28T15:25:46.0000000Z",
          "DeliveryId":5,
          "Name":"1 Week",
          "Price":159
        }
      ],
      "Description":"For the translation to sound as good as the original, the translated text is stylistically post-edited.",
      "Name":"Adaptation",
      "OrderTypeId":7,
      "ShortDescription":"6-eye principle."
    }
  ]
}

 

And to make an order

/translation/order

POST – authentication necessary

When making an order, we need more details than we need for a quote. At first, we need to know which quote you’ve chosen. So you have to add the OrderTypeId and the DeliveryId.

Very important is the CallbackUrl. After the translation job is finished, we will call this URL with a similar JSON order object and write back the translated content into your system.

We strongly advise you to use the following fields:

OrderTitle: Some short description about this order. E.g. “Spring sale”

ReferenceData: Anything you need to identify this order later (besides the GroupId and the Id for the Content field). And optionally, you could add some security token so that not everybody with access to the callback URL can update your system.

Referrer: Name of your website or system. E.g. Supertext US Website

 

{
  "CallbackUrl":"http://localhost:65346/API/ApiCallbackExample.aspx",
  "ContentType":"text\/html",
  "Currency":"chf",
  "DeliveryId":1,
  "OrderTitle":"Some title",
  "OrderTypeId":6,
  "ReferenceData":"NodeId:4ee69461-1c8d-4fbe-9d77-7d05e46bc4a8",
  "Referrer":"Supertext Magazin",
  "SourceLang":"de-CH",
  "TargetLang":"en-US",
  "WordCount":0,
  "Groups":
  [
    {
      "Context":"Some Node",
      "GroupId":"Group1",
      "Items":
      [
        {
          "Comment":null,
          "Content":"This is the content of group 1",
          "Context":null,
          "Id":"1"
        },
        {
          "Comment":null,
          "Content":"This is new content of group 1",
          "Context":null,
          "Id":"2"
        }
      ]
    },
    {
      "Context":"Some other Node",
      "GroupId":"Group2",
      "Items":
      [
        {
          "Comment":null,
          "Content":"This is the content of group 2",
          "Context":null,
          "Id":"1"
        },
        {
          "Comment":null,
          "Content":"This is new content of group 2",
          "Context":null,
          "Id":"2"
        }
      ]
    }
  ]
}

 

You get back another order object with the order Id, a price, order and delivery date. All the other data is just for your reference.

 

{
  "Id":12023,
  "OrderDate":"2012-02-09T13:43:46.0000000Z",
  "Deadline":"2012-02-09T13:43:46.0000000Z",
  "Price":199,
  "Currency":"chf",
  "DeliveryId":1,
  "OrderTitle":"Some title",
  "OrderTypeId":6,
  "ReferenceData":"NodeId:4ee69461-1c8d-4fbe-9d77-7d05e46bc4a8",
  "SourceLang":"de-CH",
  "TargetLang":"en-US",
  "Status":"New"
}

 

Status

/translation/order/{id}

GET – authentication necessary

In order to track the status of an order, just use the Id you got after you submitted the order. You will get an Order object like the one above as a return.

 

Callback
In order to get your translation back from us, you need to provide us with a callback URL.
When you create the order, you have to use the field CallbackUrl. This URL needs to accept a JSON of the type Order (as shown above). That Order object will contain your translation in the Groups and Item fields with the same Id’s, so you can map them back to your own datastructure.
We recommend that you use the ReferenceData field as some type of authentication. For example you could use a combination of an internal Id and the MD5 hash of this Id. We will return the ReferenceData field in our callback. You can then just check if the Hash matches to make sure nobody else is writing into your system.

 

Dates

All dates are in UTC and in the ISO_8601 format:

2012-05-03T12:09:46.0000000Z

If you are using .NET just use Convert.ToDateTime(), this will automatically convert from the UTC time to your local time.


Basic Authentication with WCF Web API Preview 6

February 3rd, 2012 by

One should not believe it, but it seems that there is no official way to use your own version of Basic HTTP Authentication with the WCF Web API in an MVC Web Application yet. So, now that I’ve used all possible necessary keywords we can dive right in.

 

We are using a custom ASP.NET Membership provider and the REST API should work with a token over Basic HTTP Authentication (like Basecamp). So, the built in Windows Basic Authentication is not an option.

After scanning dozens of posts on Stackoverflow and other resources I realized that either I have to go with the WCF REST Contrib library or with Open Rasta. But since I already started with the WCF Web API Preview 6 to build my REST API (and it worked fine so far) I didn’t want to switch now.

The most promising solution I found was from jslaybaugh. He is basically using a custom version of the [Authorize] attribute from the normal MVC framework and somehow integrated it all with Ninject. For some reason I didn’t got it working. In general AuthorizeAttribute and action filters are MVC specific. For WCF we have the HttpOperationHandler or the DelegatingHandler. They have their specific uses and advantages. Some info about his from Glenn Block.

I’ve decided to go with the HttpOperationHandler and found a good example from Phil Haack where he implements a Role authorization Module, that also works with Attributes, so we can implement something very similar to the AuthorizeAttribute of MVC. There are simpler solutions, e.g. you could just check this inside your Controller, but Craig Stuntz has some good points about why this is a bad idea.

So, let’s look at the code (which is a potpourri of all the above examples):

[AttributeUsage(AttributeTargets.Method)]
public class BasicHttpAuthorizationAttribute : Attribute
{
    bool requireSsl = true;
 
    public bool RequireSsl
    {
        get { return requireSsl; }
        set { requireSsl = value; }
    }
}

With this simple BasicHttpAuthorizationAttribute class we can achieve the the attribute functionality. So we can use it like this:

[BasicHttpAuthorization(RequireSsl = true)]
[WebGet(UriTemplate = "")]
public IEnumerable Get()
{

 

The RequireSsl is just an example property, you could also do a role membership check in the same way.

But the most important part is the implementation of the HttpOperationHandler. We pass the BasicHttpAuthorizationAttribute as an argument.

There are three main points that deserve attention here:

  1. If the user is not authenticated yet or provides the wrong credentials we return a HttpResponseException in the OnHandle method. We set the status code to 401 and add the WWW-Authenticate = Basic header. This creates the functionality, where the browser asks for a username/password and then automatically resends the request.
  2. In ParseAuthHeader we get the username and password out of the request. You can  then use this info with in your own way. For example with your own custom membership provider.
  3. If the user can access this method, we create a GenericPrincipal and assign it to HttpContext.Current.User. Afterwards you can then just use your normal MemberShip and RoleProvider like in every normal ASP.NET application.

Other than that, there is not much magic in here.

public class BasicHttpAuthorizationOperationHandler : HttpOperationHandler
{
 
    BasicHttpAuthorizationAttribute basicHttpAuthorizationAttribute;
 
    public BasicHttpAuthorizationOperationHandler(BasicHttpAuthorizationAttribute authorizeAttribute)
        : base("response")
    {
        basicHttpAuthorizationAttribute = authorizeAttribute;
    }
 
    protected override HttpRequestMessage OnHandle(HttpRequestMessage input)
    {
        if (Authenticate(input))
        {
            return input;
        }
        else
        {
            var challengeMessage = new HttpResponseMessage(HttpStatusCode.Unauthorized);
            challengeMessage.Headers.Add("WWW-Authenticate", "Basic");
            throw new HttpResponseException(challengeMessage);
        }
    }
 
    private bool Authenticate(HttpRequestMessage input)
    {
        if (basicHttpAuthorizationAttribute.RequireSsl &amp;&amp; !HttpContext.Current.Request.IsSecureConnection &amp;&amp; !HttpContext.Current.Request.IsLocal) return false;
 
        if (!HttpContext.Current.Request.Headers.AllKeys.Contains("Authorization")) return false;
 
        string authHeader =  HttpContext.Current.Request.Headers["Authorization"];
 
        IPrincipal principal;
        if (TryGetPrincipal(authHeader, out principal))
        {
            HttpContext.Current.User = principal;
            return true;
        }
        return false;
    }
 
    private bool TryGetPrincipal(string authHeader, out IPrincipal principal)
    {
        var creds = ParseAuthHeader(authHeader);
        if (creds != null)
        {
            if (TryGetPrincipal(creds[0], creds[1], out principal)) return true;
        }
 
        principal = null;
        return false;
    }
 
    private string[] ParseAuthHeader(string authHeader)
    {
        // Check this is a Basic Auth header
        if (authHeader == null || authHeader.Length == 0 || !authHeader.StartsWith("Basic")) return null;
 
        // Pull out the Credentials with are seperated by ':' and Base64 encoded
        string base64Credentials = authHeader.Substring(6);
        string[] credentials = Encoding.ASCII.GetString(Convert.FromBase64String(base64Credentials)).Split(new char[] { ':' });
 
        if (credentials.Length != 2 || string.IsNullOrEmpty(credentials[0]) || string.IsNullOrEmpty(credentials[0])) return null;
 
        // Okay this is the credentials
        return credentials;
    }
 
    private bool TryGetPrincipal(string userName, string password, out IPrincipal principal)
    {
        // this is the method that does the authentication
        // you can replace this with whatever logic you'd use, but proper separation would put the
 
        if (userName.Equals("remy@test.ch") &amp;&amp; password.Equals("test"))
        {
            // once the user is verified, assign it to an IPrincipal with the identity name and applicable roles
            // Example:
            //principal = new GenericPrincipal(new GenericIdentity(userName), System.Web.Security.Roles.GetRolesForUser(userName));
 
            principal = new GenericPrincipal(new GenericIdentity(userName), new string[] {"Admin", "User"});
 
            return true;
        }
        else
        {
            principal = null;
            return false;
        }
    }
}

Last but not least, we need to hook up our HttpOperationHandler with the BasicHttpAuthorizationAttribute object and route. For this we create a custom WebApiConfiguration and use a class extension to do the wiring. Honestly, I’m not really sure what is going on here, but it works :-)

public class ApiConfiguration : WebApiConfiguration
{
    public ApiConfiguration()
    {
        EnableTestClient = true;
 
        RequestHandlers = (c, e, od) =&gt;
        {
            // TODO: Configure request operation handlers
        };
 
        this.AppendAuthorizationRequestHandlers();
    }
}
 
public static class ConfigExtensions
{
    public static void AppendAuthorizationRequestHandlers(this WebApiConfiguration config)
    {
        var requestHandlers = config.RequestHandlers;
        config.RequestHandlers = (c, e, od) =&gt;
        {
            if (requestHandlers != null)
            {
                requestHandlers(c, e, od); // Original request handler
            }
            var authorizeAttribute = od.Attributes.OfType()
              .FirstOrDefault();
            if (authorizeAttribute != null)
            {
                c.Add(new BasicHttpAuthorizationOperationHandler(authorizeAttribute));
            }
        };
    }
}

And we pass this configuration in the global.asax.cs to the route handler:

public static void RegisterRoutes(RouteCollection routes)
{
    var config = new ApiConfiguration();
 
    routes.Add(new ServiceRoute("example", new HttpServiceHostFactory() { Configuration = config }, typeof(ExampleAPI)));
 
}

That is it. You can download the example project here: BasicAuthenticationWithWcfWebAPI.zip

 

Please let me know if this works for you and specially, if you find ways to improve it.


  • Topics
  • Archive
  • Subscribe
  • Facebook
  • Twitter