jeston
@jeston

Манипуляция со временем в PHP и JS

Происходит следующее:

1. На клиенте формируется некий объект и через $http-сервис Angulaк шлётся на сервер:

// insert record in table
        var jsonForServer = {
            'date'    : $scope.selectedCalendarEvent,
            'typeDate': 'local',
            'events'  : $scope.userClickedEvents.fullListTitles
        };
        // save to server
                $http.post('calendar/updatedate', { calendar_record: jsonForServer })
                    .success(function(response)
                    {
                        console.log(response);
                    });


Перед отправкой я убеждаюсь, что поле 'date' объекта jsonForServer получает значение
Mon Feb 10 2014 00:00:00 GMT+0200 от jquery-плагина, которое полностью меня устраивает.

2. На сервере action Yii получает уже другое - предыдущий день в 22.00. Вот такое мне показывает var_dump($dateToInsert) того, что пришло:

2014-02-09T22:00:00.000Z

Код, который получает запрос от Angular вот такой:

$calendar = json_decode(file_get_contents('php://input'));
$dateToInsert =  $calendar->calendar_record->date;


Тут суть происходящего примерно ясна: на клиенте метка времени +2 часа, а на клиенте -2 часа предыдущего дня (причём всегда). Но то, что приходит на сервер, меня вообще не устраивает, так как в БД записывается нужная мне запись на день раньше, так что эту ситуацию реально хотелось бы пофиксить.
  • Вопрос задан
  • 2661 просмотр
Решения вопроса 1
AloneCoder
@AloneCoder
[object Object]
Шлите timestamp или прибавьте два часа, или установите корректную date_default_timezone_set
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы