Как узнать есть ли в дате часовой пояс?
Дата задана строкой в ISO8601 или IETF RFC 2822 формате. Как узнать, что в ней указан часовой пояс, не парся строку?
var date1 = new Date('2000-01-05T23:59:59.000Z'); //UTC var date2 = new Date('2000-01-05T23:59:59.000+03:00'); var date3 = new Date('Sat Jan 05 2000 23:59:59 GMT+0000 (MSK)'); //UTC var date4 = new Date('Sat Jan 05 2000 23:59:59 GMT+0300 (MSK)'); var date5 = new Date('Sat Jan 05 2000 23:59:59'); //пользовательский пояс console.log(date1, date2, date3, date4, date5) А если без парсинга невозможно, то какими регулярками парсится? |
|
nerv_,
и как это поможет? |
Цитата:
|
Rise,
Sat, 25 Aug 2016 11:56:28 UTC - это формат UTC, возвращаемый методом toUTCString Sat Aug 25 20:59:42 UTC+0540 2016 - дата/время возвращаемое методом toString 20:57:18 UTC+0300 - время возвращаемое методом toTimeString А еще есть и ISO формат. И как больше/меньше/не равно 24? |
Цитата:
|
Проверять наличие плюсика?)
Сама по себе просто задача непонятная. |
Цитата:
|
Цитата:
let arr = [ '2000-01-05T23:59:59.000Z', '2000-01-05T23:59:59.000-03:30', '2000-01-05T23:59:59.000+04:15', 'Sat Jan 05 2000 23:59:59 GMT-0400', 'Sat Jan 05 2000 23:59:59 GMT+0000', 'Sat Jan 05 2000 23:59:59 GMT+0400', 'Sat Jan 05 2000 23:59:59' ]; for(let str of arr) { console.log(getTimeZoneOffset(str)); } /** * @see [url]https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset[/url] * @param {String} ds1 a date as string * @returns {Number} */ function getTimeZoneOffset(ds1) { let isUTC = ds1.slice(-1) === 'Z'; if (isUTC) { return 0; } let ds2 = ds1.replace(/[-+]\d\d:?\d\d/, ''); if (ds1 !== ds2) { let d1 = Date.parse(ds1); let d2 = Date.parse(ds2); return (d2 - d1) / 1000 / 60; } else { return new Date().getTimezoneOffset(); } } UPD: http://momentjs.com/guides/#/lib-con...mezone-offset/ |
Цитата:
|
Часовой пояс GMT +3, время: 00:37. |