Моя дата всегда на один час опережает синтаксический анализ даты в формате JSON

#javascript #datetime

#javascript #дата-время

Вопрос:

Я живу по Гринвичу, и на данный момент 1 переход на летнее время, что, вероятно, имеет значение…

У меня есть веб-сервис, и он выводит дату, которая заканчивается в этом формате

‘/Date(1234567) /’

Чтобы узнать, что это за дата, я просто оцениваю ее после удаления косых черт.

Вот пример:

 var jsonDate = 'Date(1304515498497)';

alert (new Date(1304515498497).toString()   "n"  
           Date(1304515498497).toString()    "n"  
            eval(jsonDate));      
  

http://jsfiddle.net/yPCNE/1/

Если я добавлю перед ней new, дата изменится, и она будет неверной. Однако в моем коде, если я удаляю New, я всегда получаю сегодняшнюю дату. Это может быть следствием использования библиотеки datejs. Из того, что я вижу, выполнение eval (‘new’ date) приводит к тому, что время отстает ровно на час, но alert (), отображающий обе даты, показывает, что они обе установлены на 1 GMT и идентичны, за исключением одного часа. Я не могу понять, откуда это берется.

Есть ли какой-нибудь лучший способ сделать это? Я просто хочу преобразовать входящую дату в формате JSON в обычную дату без каких-либо 1, которые ее испортили.

Комментарии:

1. JSON ссылается не на синтаксис JavaScript в целом, а на его стандартизированное подмножество (см. json.org ). Я не верю, что этот вопрос на самом деле связан с JSON.

Ответ №1:

Если вы не поставите new перед ним, Date().toString() просто вернет текущее время, независимо от того, что вы поместили в скобки.

 alert (Date(1).toString()   "n"  
       Date(42).toString()    "n"  
       Date("banana").toString());  //All return current time