/*=== no output expected ===*/ /* The underlying implementation of Date.prototype.getTimezoneOffset() * currently uses locale-specific datetime handling functions on UNIX. * Although we can't check that the implementation works correctly, we * can check that it doesn't fail with year values outside 32-bit UNIX * timestamp range (1970-2038). * * (Of course, some UNIX systems provide a 64-bit timestamp and have no * issues covering the Ecmascript date range.) */ function test(tv) { var d = new Date(tv); var t; t = d.getTimezoneOffset(); function err(msg) { print('timevalue ' + tv + ': ' + msg + ' (typeof t=' + typeof t + ', t=' + t + ')'); } if (typeof t !== 'number') { return err('invalid return type'); } if (t !== Math.floor(t)) { return err('offset not a whole number'); } if (!(t >= -12 * 60 && t <= 12 * 60)) { return err('offset not within expected +/- 12h range'); } } var years = [ 1969, 1970, 1980, 1990, 2000, 2010, 2020, 2030, 2037, 2038, 2039, -250000, -100000, 100000, 250000 ]; var i; print('no output expected'); try { test(Date.now()); for (i = 0; i < years.length; i++) { // Test January and July to get any DST effects test(Date.UTC(years[i], 0, 1, 0, 0, 0, 0)); test(Date.UTC(years[i], 6, 1, 0, 0, 0, 0)); } } catch (e) { print(e.name); }