26.08.2016, 21:39
|
Профессор
|
|
Регистрация: 04.10.2010
Сообщений: 571
|
|
Как узнать есть ли в дате часовой пояс?
Дата задана строкой в 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)
А если без парсинга невозможно, то какими регулярками парсится?
|
|
27.08.2016, 14:21
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
27.08.2016, 14:28
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
nerv_,
и как это поможет?
|
|
27.08.2016, 14:49
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Rise
|
string.length > 24
|
это как? )
|
|
27.08.2016, 15:03
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
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?
|
|
27.08.2016, 16:07
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Rise
|
у ТС показан формат не надо выдумывать другие комбинации...
|
Дата - это понятие широкое, включающее в себя дату/время, которые имеют множество представлений. То что вы написали, это полная чепуха, а что вот такая строка и такая строка, не есть аргумент.
|
|
27.08.2016, 20:23
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,584
|
|
Проверять наличие плюсика?)
Сама по себе просто задача непонятная.
__________________
29375, 35
|
|
28.08.2016, 00:42
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Rise
|
что предлагаешь?
|
если источник задающий это время подконтролен, то не допускать такой каши в представлении времени, в противном случае, зная о разных представлениях дата/время, разбирать рег. выражением.
|
|
28.08.2016, 12:57
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от рони
|
и как это поможет?
|
тогда, если я правильно понял вопрос, так:
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/
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Последний раз редактировалось nerv_, 28.08.2016 в 13:27.
|
|
28.08.2016, 13:14
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от laimas
|
если источник задающий это время подконтролен, то не допускать такой каши в представлении времени
|
это не каша, это стандарты представления времени
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
|
|