2013-07-27 3 views
0

Я узнал, что на mac мой скрипт действует иначе, чем на окнах. В обеих системах я использую хром в качестве браузера, я не знаю, как правильно объяснить свою проблему, так что плохо показывайте. Ниже функции Javascript он преобразует время json в дату javascript.Разница в преобразованных датах windows и mac

function getDateFromJSON(value) { 
    var retvalue = new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10)); 
    return retvalue 
} 

Когда я использовать эту функцию с даты JSON строки на компьютере с ОС Windows, как показано ниже на выходе: Сб 22 октября 1988 00:00:00 GMT + 0200 (W. Europe летнее время)

Когда я использую ту же функцию с макинтош выход равен: Пт окт 21 1988 23:00:00 GMT + 0100 (CEST)

код я использовал как на Mac и окон:

console.log(getDateFromJSON("/Date(593474400000)/")); 

Может кто-то, пожалуйста, помогите мне объяснить, как я могу это исправить?

+0

Название часового пояса в скобках происходит от операционной системы, и нет общего стандарта для этого. Почему это проблема? – Barmar

+2

Другое отличие состоит в том, что две машины имеют разные настройки часового пояса. Они разделены раз в два часа. – Barmar

+0

im разрабатывает веб-приложение, а некоторые клиенты используют mac, а даты меняются, как в примере: Mac вычитает в день от оригинала, когда этот пользователь сохраняет, дата изменилась. (никто не заметил сначала) – Josef32

ответ

2

Обе даты совпадают (после регулировки часовых поясов)

Если вы хотите, чтобы стандартизировать, используйте toUTCString:

> new Date(" Sat Oct 22 1988 00:00:00 GMT+0200 (W. Europe Daylight Time)").toUTCString() 
'Fri, 21 Oct 1988 22:00:00 GMT' 
> new Date("Fri Oct 21 1988 23:00:00 GMT+0100 (CEST)").toUTCString() 
'Fri, 21 Oct 1988 22:00:00 GMT' 
+0

Время, которое я надеюсь получить, является европейским, так есть способ конвертировать время макроса (cest) в (с летнего времени в Европе)? – Josef32

+0

@ Josef32, если вы хотите заставить западноевропейское дневное время, вы можете либо отрегулировать время, добавив смещение (добавьте 2 часа к времени, затем вызовите toUTCString и замените GMT ​​на '(W. Europe Daylight Time)') ИЛИ используйте правильная библиотека, например https://github.com/mde/timezone-js – SheetJS

+2

Спасибо за вашу помощь, проблема в том, что хром на mac не распознает летнее время. Сработало решение Nirk использовать timezone.js. – Josef32

Смежные вопросы