Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 27.08.2016, 20:23
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,513

Проверять наличие плюсика?)
Сама по себе просто задача непонятная.
__________________
29375, 35
Ответить с цитированием
  #12 (permalink)  
Старый 28.08.2016, 00:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Rise
что предлагаешь?
если источник задающий это время подконтролен, то не допускать такой каши в представлении времени, в противном случае, зная о разных представлениях дата/время, разбирать рег. выражением.
Ответить с цитированием
  #13 (permalink)  
Старый 28.08.2016, 12:57
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 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.
Ответить с цитированием
  #14 (permalink)  
Старый 28.08.2016, 13:14
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от laimas
если источник задающий это время подконтролен, то не допускать такой каши в представлении времени
это не каша, это стандарты представления времени
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #15 (permalink)  
Старый 28.08.2016, 13:26
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от nerv_
это не каша, это стандарты представления времени
Каша не в смысле напридумывали кучу, а отдавать в одном формате, а не в разнобой, в том случае если источник свой.
Ответить с цитированием
  #16 (permalink)  
Старый 29.08.2016, 03:54
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

nerv_,
Цитата:
тогда, если я правильно понял вопрос, так: ... getTimeZoneOffset ...
Ну да, что-то типа того. Как понимаю, средствами языка смещение никак не вычислить. Только парсить.

laimas, в том-то и дело, что источник не свой. В общем виде, нужно написать функцию, сравнивающую две даты, которая будет принимать аргументы в пяти распространенных форматах: JS Date, time (кол-во мс с 1970), ISO8601, IETF RFC 2822 и moment.js date. Причем даты могут быть в разных форматах.

P.S. Вопрос на засыпку для извращенцев, что вернут выражения :-)
new Date(/14/)
new Date(/33/)

Последний раз редактировалось Shitbox2, 29.08.2016 в 03:59.
Ответить с цитированием
  #17 (permalink)  
Старый 29.08.2016, 07:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Shitbox2
что вернут выражения
Invalid Date.

Сообщение от Shitbox2
нужно написать функцию, сравнивающую две даты, которая будет принимать аргументы в пяти распространенных форматах
Если бы речь шла об едином мгновении времени и времени конкретного клиента, то хватило бы Date.parse().

Разбирать рег. выражением учитывая все форматы. На сервере, к примеру в РНР есть готовая функция date_parse(), возвращающая всю информацию о заданной дате/времени. Например для таких форматов 2000-01-05T23:59:59.000Z, 2000-01-05T23:59:59.000+04:15, Sat Jan 05 2000 23:59:59 GMT-0400 будет возвращено соответсвенно:

Код:
Array
(
    [year] => 2000
    [month] => 1
    [day] => 5
    [hour] => 23
    [minute] => 59
    [second] => 59
    [fraction] => 0
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] => 1
    [zone_type] => 2
    [zone] => 0
    [is_dst] => 
    [tz_abbr] => Z
)

Array
(
    [year] => 2000
    [month] => 1
    [day] => 5
    [hour] => 23
    [minute] => 59
    [second] => 59
    [fraction] => 0
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] => 1
    [zone_type] => 1
    [zone] => -255
    [is_dst] => 
)

Array
(
    [year] => 2000
    [month] => 1
    [day] => 5
    [hour] => 23
    [minute] => 59
    [second] => 59
    [fraction] => 0
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] => 1
    [zone_type] => 1
    [zone] => 240
    [is_dst] => 
    [relative] => Array
        (
            [year] => 0
            [month] => 0
            [day] => 0
            [hour] => 0
            [minute] => 0
            [second] => 0
            [weekday] => 6
        )

)
Ответить с цитированием
  #18 (permalink)  
Старый 29.08.2016, 10:19
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Цитата:
Invalid Date.
На 100% уверен?)
Ответить с цитированием
  #19 (permalink)  
Старый 29.08.2016, 12:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Shitbox2
На 100% уверен?)
Как не извращенец да. Где изврат то? )

Что это такое - '\v'=='v', изврат или нет?
Ответить с цитированием
  #20 (permalink)  
Старый 29.08.2016, 12:42
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Shitbox2
Как понимаю, средствами языка смещение никак не вычислить
А я как по твоему сделал?)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как узнать по какой ссылке кликнули? Rooner jQuery 3 19.12.2012 17:14
Как можно что-нибудь узнать про интерфейс чужого объекта GRIG Internet Explorer 0 09.03.2011 17:16
как узнать, есть ли в строке определенное слово? FRIE Общие вопросы Javascript 2 23.09.2010 16:19
Как узнать о том, что флэш уже загрузился. Snipe Общие вопросы Javascript 4 29.01.2009 11:21