Я пытаюсь проверить, происходят ли две вещи в один и тот же день, но у меня небольшая проблема.
Используя Xero API, я получаю список календарей заработной платы, каждый из которых имеет время начала и время окончания, и эти времена возвращаются в виде Ymd с обнуленными часами / минутами / секундами, с Timezone Australia / Sydney следующим образом:
DateTime Object ( [date] => 2018-05-01 00:00:00.000000 [timezone_type] => 3 [timezone] => Australia/Sydney )
Я получаю список последних расписаний для сотрудника, и у них есть даты начала и окончания, которые должны совпадать с календарным периодом начисления заработной платы - но они возвращаются как часовой пояс Z (Zulu?) И снова с нулевым временем , как таковой:
DateTime Object ( [date] => 2018-04-30 00:00:00.000000 [timezone_type] => 2 [timezone] => Z )
Клянусь, я погуглил до того, как спросил, но все равно спрошу:
Как я могу сравнить эти две даты? Я попытался создать новый DateTime из формата startDate-> ('Ym-d'), я попытался установить часовой пояс в Zulu (был явно на 10 часов), попытался создать новый DateTime из клона времени Zulu, где я установил часовой пояс, а затем получил только часть Ymd ... Что-то, что "работает", это клонировать дату, установить часовой пояс, а затем установить время на 0 ...
Как это:
$startDate = DateTime::createFromFormat('Y-m-d', $calendar->getStartDate()->format('Y-m-d'), new DateTimeZone("Australia/Sydney"))->setTime(0,0);
Есть ли лучший и аккуратный способ сделать это?