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