Я читал о том, как это сделать все утро, и общее мнение таково: сохраняйте свои временные метки в UTC и вычисляйте смещение оттуда.
Однако, как и большинство людей, я поддерживаю существующую кодовую базу и не могу изменить способ хранения наших дат. По крайней мере, не в отведенное время.
Итак, мой вопрос, могу ли я безопасно сделать что-то подобное?
// this is my time zone
$timestamp = strtotime($timestampFromDatabase);
date_default_timezone_set('America/New York');
$tz = date_default_timezone_get();
// this is theoretically their timezone, which will eventually
// be taken from a session variable
date_default_timezone_set('Europe/Paris');
$offset = time() - $timestamp;
$timestamp -= $offset;
// now that I have the offset, display dates like this
date('r', $timestamp);
Некоторые люди советуют не делать арифметику дат, но что я делаю здесь неправильно? Есть ли способ лучше? Есть ли подводные камни, на которые мне нужно обратить внимание? Меня особенно интересуют, какие ошибки может вызывать этот метод, и, если таковые имеются, на кого они будут влиять?
Мой начальник - тот парень, которому все равно, если ошибка затрагивает только 1% пользователей.
Редактировать: Могу ли я сделать это более понятным? Похоже, у меня не так уж много желающих. Кто-нибудь? Даже смутное предложение или ссылка были бы чрезвычайно полезны.