time-zones.js (11278B)
1 // |reftest| skip-if(winWidget) -- Windows doesn't accept IANA names for the TZ env variable 2 3 // bug 158328 4 inTimeZone("Europe/London", () => { 5 let dt1 = new Date(2002, Month.July, 19, 16, 10, 55); 6 assertDateTime(dt1, "Fri Jul 19 2002 16:10:55 GMT+0100 (BST)", "British Summer Time"); 7 8 let dt2 = new Date(2009, Month.December, 24, 13, 44, 52); 9 assertDateTime(dt2, "Thu Dec 24 2009 13:44:52 GMT+0000 (GMT)", "Greenwich Mean Time"); 10 }); 11 12 // bug 294908 13 inTimeZone("America/New_York", () => { 14 let dt = new Date(2003, Month.April, 6, 2, 30, 00); 15 assertDateTime(dt, "Sun Apr 06 2003 03:30:00 GMT-0400 (EDT)", "Eastern Daylight Time"); 16 }); 17 18 // bug 610183 19 inTimeZone("America/Los_Angeles", () => { 20 let dt = new Date(2014, Month.November, 2, 1, 47, 42); 21 assertDateTime(dt, "Sun Nov 02 2014 01:47:42 GMT-0700 (PDT)", "Pacific Daylight Time"); 22 }); 23 24 // bug 629465 25 inTimeZone("America/Denver", () => { 26 let dt1 = new Date(Date.UTC(2015, Month.November, 1, 0, 0, 0) + 6 * msPerHour); 27 assertDateTime(dt1, "Sun Nov 01 2015 00:00:00 GMT-0600 (MDT)", "Mountain Daylight Time"); 28 29 let dt2 = new Date(Date.UTC(2015, Month.November, 1, 1, 0, 0) + 6 * msPerHour); 30 assertDateTime(dt2, "Sun Nov 01 2015 01:00:00 GMT-0600 (MDT)", "Mountain Daylight Time"); 31 32 let dt3 = new Date(Date.UTC(2015, Month.November, 1, 1, 0, 0) + 7 * msPerHour); 33 assertDateTime(dt3, "Sun Nov 01 2015 01:00:00 GMT-0700 (MST)", "Mountain Standard Time"); 34 }); 35 36 // bug 637244 37 inTimeZone("Europe/Helsinki", () => { 38 let dt1 = new Date(2016, Month.March, 27, 2, 59); 39 assertDateTime(dt1, "Sun Mar 27 2016 02:59:00 GMT+0200 (EET)", "Eastern European Standard Time"); 40 41 let dt2 = new Date(2016, Month.March, 27, 3, 0); 42 assertDateTime(dt2, "Sun Mar 27 2016 04:00:00 GMT+0300 (EEST)", "Eastern European Summer Time"); 43 }); 44 45 // bug 637244 46 inTimeZone("Asia/Novosibirsk", () => { 47 let dt1 = new Date(1984, Month.April, 1, -1); 48 assertDateTime(dt1, "Sat Mar 31 1984 23:00:00 GMT+0700 (Krasnoyarsk Standard Time)", "+07", "Novosibirsk Standard Time"); 49 50 let dt2 = new Date(1984, Month.April, 1); 51 assertDateTime(dt2, "Sun Apr 01 1984 01:00:00 GMT+0800 (Krasnoyarsk Summer Time)", "+08", "Novosibirsk Summer Time"); 52 }); 53 54 // bug 718175 55 inTimeZone("Europe/London", () => { 56 let dt = new Date(0); 57 assertEq(dt.getHours(), 1); 58 }); 59 60 // bug 719274 61 inTimeZone("Pacific/Auckland", () => { 62 let dt = new Date(2012, Month.January, 19, 12, 54, 27); 63 assertDateTime(dt, "Thu Jan 19 2012 12:54:27 GMT+1300 (NZDT)", "New Zealand Daylight Time"); 64 }); 65 66 // bug 742427 67 inTimeZone("Europe/Paris", () => { 68 let dt1 = new Date(2009, Month.March, 29, 1, 0, 0); 69 assertDateTime(dt1, "Sun Mar 29 2009 01:00:00 GMT+0100 (CET)", "Central European Standard Time"); 70 dt1.setHours(dt1.getHours() + 1); 71 assertDateTime(dt1, "Sun Mar 29 2009 03:00:00 GMT+0200 (CEST)", "Central European Summer Time"); 72 73 let dt2 = new Date(2010, Month.March, 29, 1, 0, 0); 74 assertDateTime(dt2, "Mon Mar 29 2010 01:00:00 GMT+0200 (CEST)", "Central European Summer Time"); 75 dt2.setHours(dt2.getHours() + 1); 76 assertDateTime(dt2, "Mon Mar 29 2010 02:00:00 GMT+0200 (CEST)", "Central European Summer Time"); 77 }); 78 inTimeZone("America/New_York", () => { 79 let dt = new Date(2009, Month.March, 8, 1, 0, 0); 80 assertDateTime(dt, "Sun Mar 08 2009 01:00:00 GMT-0500 (EST)", "Eastern Standard Time"); 81 dt.setHours(dt.getHours() + 1); 82 assertDateTime(dt, "Sun Mar 08 2009 03:00:00 GMT-0400 (EDT)", "Eastern Daylight Time"); 83 }); 84 inTimeZone("America/Denver", () => { 85 let dt = new Date(2009, Month.March, 8, 1, 0, 0); 86 assertDateTime(dt, "Sun Mar 08 2009 01:00:00 GMT-0700 (MST)", "Mountain Standard Time"); 87 dt.setHours(dt.getHours() + 1); 88 assertDateTime(dt, "Sun Mar 08 2009 03:00:00 GMT-0600 (MDT)", "Mountain Daylight Time"); 89 }); 90 inTimeZone("America/New_York", () => { 91 let dt1 = new Date(Date.UTC(2008, Month.March, 9, 0, 0, 0) + 5 * msPerHour); 92 assertDateTime(dt1, "Sun Mar 09 2008 00:00:00 GMT-0500 (EST)", "Eastern Standard Time"); 93 94 let dt2 = new Date(Date.UTC(2008, Month.March, 9, 1, 0, 0) + 5 * msPerHour); 95 assertDateTime(dt2, "Sun Mar 09 2008 01:00:00 GMT-0500 (EST)", "Eastern Standard Time"); 96 97 let dt3 = new Date(Date.UTC(2008, Month.March, 9, 4, 0, 0) + 4 * msPerHour); 98 assertDateTime(dt3, "Sun Mar 09 2008 04:00:00 GMT-0400 (EDT)", "Eastern Daylight Time"); 99 }); 100 inTimeZone("Europe/Paris", () => { 101 let dt1 = new Date(Date.UTC(2008, Month.March, 30, 0, 0, 0) - 1 * msPerHour); 102 assertDateTime(dt1, "Sun Mar 30 2008 00:00:00 GMT+0100 (CET)", "Central European Standard Time"); 103 104 let dt2 = new Date(Date.UTC(2008, Month.March, 30, 1, 0, 0) - 1 * msPerHour); 105 assertDateTime(dt2, "Sun Mar 30 2008 01:00:00 GMT+0100 (CET)", "Central European Standard Time"); 106 107 let dt3 = new Date(Date.UTC(2008, Month.March, 30, 3, 0, 0) - 2 * msPerHour); 108 assertDateTime(dt3, "Sun Mar 30 2008 03:00:00 GMT+0200 (CEST)", "Central European Summer Time"); 109 110 let dt4 = new Date(Date.UTC(2008, Month.March, 30, 4, 0, 0) - 2 * msPerHour); 111 assertDateTime(dt4, "Sun Mar 30 2008 04:00:00 GMT+0200 (CEST)", "Central European Summer Time"); 112 }); 113 114 // bug 802627 115 inTimeZone("America/New_York", () => { 116 let dt = new Date(0); 117 assertDateTime(dt, "Wed Dec 31 1969 19:00:00 GMT-0500 (EST)", "Eastern Standard Time"); 118 }); 119 120 // bug 819820 121 inTimeZone("Europe/London", () => { 122 let dt1 = new Date(Date.UTC(2012, Month.October, 28, 0, 59, 59)); 123 assertDateTime(dt1, "Sun Oct 28 2012 01:59:59 GMT+0100 (BST)", "British Summer Time"); 124 125 let dt2 = new Date(Date.UTC(2012, Month.October, 28, 1, 0, 0)); 126 assertDateTime(dt2, "Sun Oct 28 2012 01:00:00 GMT+0000 (GMT)", "Greenwich Mean Time"); 127 128 let dt3 = new Date(Date.UTC(2012, Month.October, 28, 1, 59, 59)); 129 assertDateTime(dt3, "Sun Oct 28 2012 01:59:59 GMT+0000 (GMT)", "Greenwich Mean Time"); 130 131 let dt4 = new Date(Date.UTC(2012, Month.October, 28, 2, 0, 0)); 132 assertDateTime(dt4, "Sun Oct 28 2012 02:00:00 GMT+0000 (GMT)", "Greenwich Mean Time"); 133 }); 134 135 // bug 879261 136 inTimeZone("America/New_York", () => { 137 let dt1 = new Date(1362891600000); 138 assertDateTime(dt1, "Sun Mar 10 2013 00:00:00 GMT-0500 (EST)", "Eastern Standard Time"); 139 140 let dt2 = new Date(dt1.setHours(dt1.getHours() + 24)); 141 assertDateTime(dt2, "Mon Mar 11 2013 00:00:00 GMT-0400 (EDT)", "Eastern Daylight Time"); 142 }); 143 inTimeZone("America/Los_Angeles", () => { 144 let dt1 = new Date(2014, Month.January, 1); 145 assertDateTime(dt1, "Wed Jan 01 2014 00:00:00 GMT-0800 (PST)", "Pacific Standard Time"); 146 147 let dt2 = new Date(2014, Month.August, 1); 148 assertDateTime(dt2, "Fri Aug 01 2014 00:00:00 GMT-0700 (PDT)", "Pacific Daylight Time"); 149 }); 150 inTimeZone("America/New_York", () => { 151 let dt1 = new Date(2016, Month.October, 14, 3, 5, 9); 152 assertDateTime(dt1, "Fri Oct 14 2016 03:05:09 GMT-0400 (EDT)", "Eastern Daylight Time"); 153 154 let dt2 = new Date(2016, Month.January, 9, 23, 26, 40); 155 assertDateTime(dt2, "Sat Jan 09 2016 23:26:40 GMT-0500 (EST)", "Eastern Standard Time"); 156 }); 157 158 // bug 994086 159 inTimeZone("Europe/Vienna", () => { 160 let dt1 = new Date(2014, Month.March, 30, 2, 0); 161 assertDateTime(dt1, "Sun Mar 30 2014 03:00:00 GMT+0200 (CEST)", "Central European Summer Time"); 162 163 let dt2 = new Date(2014, Month.March, 30, 3, 0); 164 assertDateTime(dt2, "Sun Mar 30 2014 03:00:00 GMT+0200 (CEST)", "Central European Summer Time"); 165 166 let dt3 = new Date(2014, Month.March, 30, 4, 0); 167 assertDateTime(dt3, "Sun Mar 30 2014 04:00:00 GMT+0200 (CEST)", "Central European Summer Time"); 168 }); 169 170 // bug 1084434 171 inTimeZone("America/Sao_Paulo", () => { 172 let dt = new Date(2014, Month.October, 19); 173 assertEq(dt.getDate(), 19); 174 assertEq(dt.getHours(), 1); 175 assertDateTime(dt, "Sun Oct 19 2014 01:00:00 GMT-0200 (BRST)", "-02", "Brasilia Summer Time"); 176 }); 177 178 // bug 1084547 179 inTimeZone("America/New_York", () => { 180 let dt = new Date(Date.parse("2014-11-02T02:00:00-04:00")); 181 assertDateTime(dt, "Sun Nov 02 2014 01:00:00 GMT-0500 (EST)", "Eastern Standard Time"); 182 183 dt.setMilliseconds(0); 184 assertDateTime(dt, "Sun Nov 02 2014 01:00:00 GMT-0400 (EDT)", "Eastern Daylight Time"); 185 }); 186 187 // bug 1118690 188 inTimeZone("Europe/London", () => { 189 let dt = new Date(1965, Month.January, 1); 190 assertEq(dt.getFullYear(), 1965); 191 }); 192 193 // bug 1155096 194 inTimeZone("Europe/Moscow", () => { 195 let dt1 = new Date(1981, Month.March, 32); 196 assertEq(dt1.getDate(), 1); 197 198 let dt2 = new Date(1982, Month.March, 32); 199 assertEq(dt2.getDate(), 1); 200 201 let dt3 = new Date(1983, Month.March, 32); 202 assertEq(dt3.getDate(), 1); 203 204 let dt4 = new Date(1984, Month.March, 32); 205 assertEq(dt4.getDate(), 1); 206 }); 207 208 // bug 1284507 209 inTimeZone("Atlantic/Azores", () => { 210 let dt1 = new Date(2017, Month.March, 25, 0, 0, 0); 211 assertDateTime(dt1, "Sat Mar 25 2017 00:00:00 GMT-0100 (AZOT)", "-01", "Azores Standard Time"); 212 213 let dt2 = new Date(2016, Month.October, 30, 0, 0, 0); 214 assertDateTime(dt2, "Sun Oct 30 2016 00:00:00 GMT+0000 (AZOST)", "+00", "Azores Summer Time"); 215 216 let dt3 = new Date(2016, Month.October, 30, 23, 0, 0); 217 assertDateTime(dt3, "Sun Oct 30 2016 23:00:00 GMT-0100 (AZOT)", "-01", "Azores Standard Time"); 218 }); 219 220 // bug 1303306 221 inTimeZone("America/New_York", () => { 222 let dt = new Date(2016, Month.September, 15, 16, 14, 48); 223 assertDateTime(dt, "Thu Sep 15 2016 16:14:48 GMT-0400 (EDT)", "Eastern Daylight Time"); 224 }); 225 226 // bug 1317364 227 inTimeZone("America/Los_Angeles", () => { 228 let dt = new Date(2016, Month.March, 13, 2, 30, 0, 0); 229 assertDateTime(dt, "Sun Mar 13 2016 03:30:00 GMT-0700 (PDT)", "Pacific Daylight Time"); 230 231 let dt2 = new Date(2016, Month.January, 5, 0, 30, 30, 500); 232 assertDateTime(dt2, "Tue Jan 05 2016 00:30:30 GMT-0800 (PST)", "Pacific Standard Time"); 233 234 let dt3 = new Date(dt2.getTime()); 235 dt3.setMonth(dt2.getMonth() + 2); 236 dt3.setDate(dt2.getDate() + 7 + 1); 237 dt3.setHours(dt2.getHours() + 2); 238 239 assertEq(dt3.getHours(), 3); 240 }); 241 242 // bug 1335818 243 inTimeZone("Asia/Jerusalem", () => { 244 let dt1 = new Date(2013, Month.March, 22, 1, 0, 0, 0); 245 assertDateTime(dt1, "Fri Mar 22 2013 01:00:00 GMT+0200 (IST)", "Israel Standard Time"); 246 247 let dt2 = new Date(2013, Month.March, 22, 2, 0, 0, 0); 248 assertDateTime(dt2, "Fri Mar 22 2013 02:00:00 GMT+0200 (IST)", "Israel Standard Time"); 249 250 let dt3 = new Date(2013, Month.March, 22, 3, 0, 0, 0); 251 assertDateTime(dt3, "Fri Mar 22 2013 03:00:00 GMT+0200 (IST)", "Israel Standard Time"); 252 253 let dt4 = new Date(2013, Month.March, 29, 1, 0, 0, 0); 254 assertDateTime(dt4, "Fri Mar 29 2013 01:00:00 GMT+0200 (IST)", "Israel Standard Time"); 255 256 let dt5 = new Date(2013, Month.March, 29, 2, 0, 0, 0); 257 assertDateTime(dt5, "Fri Mar 29 2013 03:00:00 GMT+0300 (IDT)", "Israel Daylight Time"); 258 259 let dt6 = new Date(2013, Month.March, 29, 3, 0, 0, 0); 260 assertDateTime(dt6, "Fri Mar 29 2013 03:00:00 GMT+0300 (IDT)", "Israel Daylight Time"); 261 }); 262 263 // bug 1355272 264 inTimeZone("America/Los_Angeles", () => { 265 let dt = new Date(2017, Month.April, 10, 17, 25, 07); 266 assertDateTime(dt, "Mon Apr 10 2017 17:25:07 GMT-0700 (PDT)", "Pacific Daylight Time"); 267 }); 268 269 if (typeof reportCompare === "function") 270 reportCompare(true, true);