time-zone-pst.js (5732B)
1 // |reftest| skip-if(!xulRuntime.shell) 2 3 assertEq(/^(PST|PDT)$/.test(getTimeZone()), true, 4 "The default time zone is set to PST8PDT for all jstests (when run in the shell)"); 5 6 const msPerMinute = 60 * 1000; 7 8 function shortTimeZone(str) { 9 return str.replace("(Pacific Standard Time)", "(PST)") 10 .replace("(Pacific Daylight Time)", "(PDT)"); 11 } 12 13 function assertEqDate(dt, date, time) { 14 assertEq(shortTimeZone(dt.toString()), `${date} ${time}`); 15 assertEq(dt.toDateString(), date); 16 assertEq(shortTimeZone(dt.toTimeString()), time); 17 } 18 19 // PDT -> PST, using milliseconds from epoch. 20 { 21 let midnight = new Date(2016, Month.November, 6, 0, 0, 0, 0); 22 let midnightUTC = Date.UTC(2016, Month.November, 6, 0, 0, 0, 0); 23 24 // Ensure midnight time is correct. 25 assertEq(midnightUTC - midnight.getTime(), -7 * msPerHour); 26 27 let tests = [ 28 { offset: 0 * 60, date: "Sun Nov 06 2016", time: "00:00:00 GMT-0700 (PDT)" }, 29 { offset: 0 * 60 + 30, date: "Sun Nov 06 2016", time: "00:30:00 GMT-0700 (PDT)" }, 30 { offset: 1 * 60, date: "Sun Nov 06 2016", time: "01:00:00 GMT-0700 (PDT)" }, 31 { offset: 1 * 60 + 30, date: "Sun Nov 06 2016", time: "01:30:00 GMT-0700 (PDT)" }, 32 { offset: 2 * 60, date: "Sun Nov 06 2016", time: "01:00:00 GMT-0800 (PST)" }, 33 { offset: 2 * 60 + 30, date: "Sun Nov 06 2016", time: "01:30:00 GMT-0800 (PST)" }, 34 { offset: 3 * 60, date: "Sun Nov 06 2016", time: "02:00:00 GMT-0800 (PST)" }, 35 { offset: 3 * 60 + 30, date: "Sun Nov 06 2016", time: "02:30:00 GMT-0800 (PST)" }, 36 { offset: 4 * 60, date: "Sun Nov 06 2016", time: "03:00:00 GMT-0800 (PST)" }, 37 { offset: 4 * 60 + 30, date: "Sun Nov 06 2016", time: "03:30:00 GMT-0800 (PST)" }, 38 ]; 39 40 for (let {offset, date, time} of tests) { 41 let dt = new Date(midnight.getTime() + offset * msPerMinute); 42 assertEqDate(dt, date, time); 43 } 44 } 45 46 47 // PDT -> PST, using local date-time. 48 { 49 let tests = [ 50 { offset: 0 * 60, date: "Sun Nov 06 2016", time: "00:00:00 GMT-0700 (PDT)" }, 51 { offset: 0 * 60 + 30, date: "Sun Nov 06 2016", time: "00:30:00 GMT-0700 (PDT)" }, 52 { offset: 1 * 60, date: "Sun Nov 06 2016", time: "01:00:00 GMT-0700 (PDT)" }, 53 { offset: 1 * 60 + 30, date: "Sun Nov 06 2016", time: "01:30:00 GMT-0700 (PDT)" }, 54 { offset: 2 * 60, date: "Sun Nov 06 2016", time: "02:00:00 GMT-0800 (PST)" }, 55 { offset: 2 * 60 + 30, date: "Sun Nov 06 2016", time: "02:30:00 GMT-0800 (PST)" }, 56 { offset: 3 * 60, date: "Sun Nov 06 2016", time: "03:00:00 GMT-0800 (PST)" }, 57 { offset: 3 * 60 + 30, date: "Sun Nov 06 2016", time: "03:30:00 GMT-0800 (PST)" }, 58 { offset: 4 * 60, date: "Sun Nov 06 2016", time: "04:00:00 GMT-0800 (PST)" }, 59 { offset: 4 * 60 + 30, date: "Sun Nov 06 2016", time: "04:30:00 GMT-0800 (PST)" }, 60 ]; 61 62 for (let {offset, date, time} of tests) { 63 let dt = new Date(2016, Month.November, 6, (offset / 60)|0, (offset % 60), 0, 0); 64 assertEqDate(dt, date, time); 65 } 66 } 67 68 69 // PST -> PDT, using milliseconds from epoch. 70 { 71 let midnight = new Date(2016, Month.March, 13, 0, 0, 0, 0); 72 let midnightUTC = Date.UTC(2016, Month.March, 13, 0, 0, 0, 0); 73 74 // Ensure midnight time is correct. 75 assertEq(midnightUTC - midnight.getTime(), -8 * msPerHour); 76 77 let tests = [ 78 { offset: 0 * 60, date: "Sun Mar 13 2016", time: "00:00:00 GMT-0800 (PST)" }, 79 { offset: 0 * 60 + 30, date: "Sun Mar 13 2016", time: "00:30:00 GMT-0800 (PST)" }, 80 { offset: 1 * 60, date: "Sun Mar 13 2016", time: "01:00:00 GMT-0800 (PST)" }, 81 { offset: 1 * 60 + 30, date: "Sun Mar 13 2016", time: "01:30:00 GMT-0800 (PST)" }, 82 { offset: 2 * 60, date: "Sun Mar 13 2016", time: "03:00:00 GMT-0700 (PDT)" }, 83 { offset: 2 * 60 + 30, date: "Sun Mar 13 2016", time: "03:30:00 GMT-0700 (PDT)" }, 84 { offset: 3 * 60, date: "Sun Mar 13 2016", time: "04:00:00 GMT-0700 (PDT)" }, 85 { offset: 3 * 60 + 30, date: "Sun Mar 13 2016", time: "04:30:00 GMT-0700 (PDT)" }, 86 { offset: 4 * 60, date: "Sun Mar 13 2016", time: "05:00:00 GMT-0700 (PDT)" }, 87 { offset: 4 * 60 + 30, date: "Sun Mar 13 2016", time: "05:30:00 GMT-0700 (PDT)" }, 88 ]; 89 90 for (let {offset, date, time} of tests) { 91 let dt = new Date(midnight.getTime() + offset * msPerMinute); 92 assertEqDate(dt, date, time); 93 } 94 } 95 96 97 // PST -> PDT, using local date-time. 98 { 99 let tests = [ 100 { offset: 0 * 60, date: "Sun Mar 13 2016", time: "00:00:00 GMT-0800 (PST)" }, 101 { offset: 0 * 60 + 30, date: "Sun Mar 13 2016", time: "00:30:00 GMT-0800 (PST)" }, 102 { offset: 1 * 60, date: "Sun Mar 13 2016", time: "01:00:00 GMT-0800 (PST)" }, 103 { offset: 1 * 60 + 30, date: "Sun Mar 13 2016", time: "01:30:00 GMT-0800 (PST)" }, 104 { offset: 2 * 60, date: "Sun Mar 13 2016", time: "03:00:00 GMT-0700 (PDT)" }, 105 { offset: 2 * 60 + 30, date: "Sun Mar 13 2016", time: "03:30:00 GMT-0700 (PDT)" }, 106 { offset: 3 * 60, date: "Sun Mar 13 2016", time: "03:00:00 GMT-0700 (PDT)" }, 107 { offset: 3 * 60 + 30, date: "Sun Mar 13 2016", time: "03:30:00 GMT-0700 (PDT)" }, 108 { offset: 4 * 60, date: "Sun Mar 13 2016", time: "04:00:00 GMT-0700 (PDT)" }, 109 { offset: 4 * 60 + 30, date: "Sun Mar 13 2016", time: "04:30:00 GMT-0700 (PDT)" }, 110 ]; 111 112 for (let {offset, date, time} of tests) { 113 let dt = new Date(2016, Month.March, 13, (offset / 60)|0, (offset % 60), 0, 0); 114 assertEqDate(dt, date, time); 115 } 116 } 117 118 119 if (typeof reportCompare === "function") 120 reportCompare(true, true);