Просто чтобы убедиться, что мы находимся на одной странице, я просто хочу повторить, что отметка времени unix — это просто количество секунд, прошедших с «эпохи Unix» (1 января 1970 г.). Поэтому простая математика будет работать с временными метками unix.
Есть два способа сделать это; судя по вашему сообщению, вы запутались в том, что вы хотели бы использовать.
Первый способ был бы самым простым (и наиболее логичным), это сохранить их смещение (если оно у вас уже есть) и умножить его на 3600 (1 час в секундах), а затем добавить это значение текущей временной метки unix, чтобы получить окончательное время их выполнения.
Другой способ сделать это — использовать классы DateTime
и DateTimeZone
. Как эти два класса работают, как показано здесь, вы создаете два DateTimeZone
объекта, один с вашим часовым поясом и один с их часовым поясом; создать два объекта DateTime
с первым параметром, равным "now"
, и вторым, являющимся ссылкой на объекты DateTimeZone
выше (соответственно); а затем вызовите метод getOffset
для вашего объекта часового пояса, передав их объект часового пояса в качестве первого параметра, в конечном итоге получив смещение в секундах, которое можно добавить к текущей метке времени unix для получить время, необходимое для выполнения их задания.
Второй способ кажется намного более сложным для такой простой задачи, если я сам так говорю, поэтому первое решение может лучше соответствовать вашим потребностям. Однако, если вы хотите иметь более полный метод, то использование DateTime
и DateTimeZone
определенно возможно.
Небольшое примечание о strtotime: Strtotime — это простая противоположность команде date(), и от нее будет не больше пользы, чем «инструмент» для достижения того, что вы ищете. Он сам по себе не будет конвертировать или находить смещения для вас; он просто преобразует отформатированные дату и время в отметку времени unix.
person
Qix - MONICA WAS MISTREATED
schedule
16.11.2010
-3600
, чтобы ваш скрипт мог работать на час вперед, и наоборот - person ajreal   schedule 16.11.2010