Я просмотрел предыдущие вопросы, и ничто, похоже, не соответствует тому, что мне нужно.
Я работаю над системой планирования, и теперь клиент хочет добавить часовые пояса.
Таким образом, в основном я должен иметь возможность составлять действие в определенную дату и время.
Допустим, кто-то хочет получить предупреждение в следующую дату / время:
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.