Базовое изменение времени PHP

Я просмотрел предыдущие вопросы, и ничто, похоже, не соответствует тому, что мне нужно.

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

Таким образом, в основном я должен иметь возможность составлять действие в определенную дату и время.

Допустим, кто-то хочет получить предупреждение в следующую дату / время:

25-12-2010 13:01:00 + / – их часовой пояс

Мне нужно иметь возможность хранить это в mysql как unix_timestamp, я смотрел PHP DateTime и DateTimeZone но это еще больше смутило меня.

Я также посмотрел на strtotime , я просто не знаю, как наилучшим образом разработать дату / время со смещением.

Просто чтобы убедиться, что мы на одной странице, я просто хочу повторить, что временная метка unix – это просто количество секунд с момента «Unix Epoch» (1 января 1970 г.). Поэтому простая математика будет работать с отметками времени unix.

Это можно сделать двумя способами: судя по вашему сообщению, вы смущены тем, что вы хотели бы использовать.

Первый способ был бы самым простым (и наиболее логичным) способом, и это сохранить их смещение (если у вас уже есть это), и умножить на 3600 (1 час в секундах), а затем добавить это значение в текущую временную метку unix, чтобы получить окончательное время работы.

Другой способ сделать это – использовать классы DateTime и DateTimeZone . Как работают эти два класса, как показано здесь , вы создаете два объекта DateTimeZone , один с вашим часовым поясом и один с их; создайте два объекта DateTime с первыми параметрами "now" а второй – ссылкой на объекты DateTimeZone выше (соответственно); а затем вызовите метод getOffset для объекта вашего часового пояса, передающего свой объект часового пояса в качестве первого параметра, в конечном счете получив смещение в секундах, которое можно добавить к текущей временной отметке unix, чтобы получить время, необходимое для выполнения их задания.

Второй способ кажется намного более сложным для такой легкой задачи, если я так говорю, поэтому первое решение может лучше подходить вашим потребностям. Однако, если вы хотите иметь более полный метод, то использование DateTime и DateTimeZone определенно будет возможностью.

Быстрая заметка о strtotime: Strtotime – это простая противоположность команде date () и не будет более полезной, чем «инструмент» для достижения того, что вы ищете. Он сам по себе не будет конвертировать или находить смещения для вас; он просто преобразует отформатированную дату и время в временную метку unix.