Как узнать есть ли в дате часовой пояс?
Дата задана строкой в 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, время: 15:14. |