2015-09-29 4 views
1

У меня есть следующий код PHP, который возвращает время в другом часовом поясе:Почему функция jQuery new Date() перезаписывает переданный параметр?

<?php 
date_default_timezone_set('America/New_York'); 
echo (new DateTime())->format('r'); 
?> 

и что работает нормально, когда я запускаю его в браузере, я получаю время:

Tue, 29 Sep 2015 12:07:01 -0400 

Теперь я есть сценарий jquery, который вызывает ajax на этой странице php и отображает его на моей странице. Она начинается так:

$.ajax({ 
    type: 'GET', 
    url: 'timeinnewyork.php', 
    complete: function(resp){ 

     var today; 
     today = new Date(resp.responseText); 
     alert(resp.responseText); 
     alert(today); 
     (...) 

и первое предупреждение возвращает время в Нью-Йорке:

Tue, 29 Sep 2015 12:07:27 -0400 

но второй один показывает мне мой нынешний европейский часовой пояс:

Tue Sep 29 2015 18:07:27 GMT+0200 (Central Europe Daylight Time) 

Я хочу использовать время в Нью-Йорке, а не мое местное время. Как я могу это исправить?

+0

Javascript не храним часовой пояс. Это просто абсолютное время, и зона используется для ввода и вывода. – Barmar

+0

http://stackoverflow.com/questions/20834411/specify-timezone-in-javascript –

ответ

0

Возврат времени UTC с PHP, а затем формат в JS с использованием библиотеки как http://momentjs.com/timezone/ даты

+0

Я думаю, он хочет использовать часовой пояс, который возвращает сервер. – Barmar

+0

Его взгляд может быть неправильным. Лучше, если сервер будет нейтральным для часовых поясов, особенно если вы используете разные временные интервалы. Если вы правы, он может легко передать часовой пояс с сервера на JS. – Orland

+0

@Orland, не могли бы вы дать мне пример того, как правильно использовать moment.js здесь? Я хочу создать объект datetime, чтобы впоследствии использовать его, например: 'var mm = today.getMonth();' – randomuser1