Я не уверен, почему strtotime() в PHP возвращает другой результат в другой часовой пояс, даже если такая же дата указана как параметр, кто-нибудь знает ответ?  Я также хочу знать, могу ли я сделать аналогичную задачу (преобразование datetime в int чтобы делать вычисления легко) с другой функцией, которая дает тот же результат в разных часовых поясах? 
РЕДАКТИРОВАТЬ:
  Пример: если я использую strtotime('2011-09-19 00:00:00') не следует ли просто вернуть разницу между 'January 1 1970 00:00:00' и '2011-09-19 00:00:00' в секундах?  Почему часовой пояс является проблемой здесь?  И могу ли я получить что-то, что дает разницу без проблемы с часовым поясом? 
Короче: часовой пояс считается, потому что значение Unix Epoch считается в GMT.
  В более широком смысле 2011-09-19 00:00:00 приходит в Бангладеш почти через 6 часов 2011-09-19 00:00:00 в зоне GMT.  Из-за этого пробела в зоне GMT, когда в BD появляется такая же дата, еще 21600 секунд. 
  Поскольку расчет выполняется в отношении GMT, вы должны добавить эти 21600 секунд, чтобы получить фактическую разницу. 
  strtotime дает разные результаты в разных часовых поясах, потому что он учитывает часовые пояса … 
  Из strtotime : 
Функция ожидает получить строку, содержащую английский формат даты, и попытается разобрать этот формат на отметку времени Unix (количество секунд с 1 января 1970 года 00:00:00 по UTC)
Эта функция будет использовать переменную окружения TZ (если доступно) для вычисления временной метки. Начиная с PHP 5.1.0 есть более простые способы определения часового пояса, который используется во всех функциях даты / времени. Этот процесс объясняется на
date_default_timezone_get()функцииdate_default_timezone_get().
  Посмотрите на mktime() . 
  Начиная с PHP 5.1 вы можете использовать date_default_timezone_set перед вызовом mktime или strtotime . 
Из руководства по PHP:
Эта функция будет использовать переменную окружения TZ (если доступно) для вычисления временной метки. Начиная с PHP 5.1.0 есть более простые способы определения часового пояса, который используется во всех функциях даты / времени. Этот процесс объясняется на странице функции date_default_timezone_get ().
  Используйте date_default_timezone_set перед вызовом функций даты и времени, чтобы выбрать, в какой часовой пояс вы хотите работать. 
http://www.php.net/manual/en/function.date-default-timezone-set.php
  Из PHP-документов в strtotime : 
Эта функция будет использовать переменную окружения TZ (если доступно) для вычисления временной метки. Начиная с PHP 5.1.0 есть более простые способы определения часового пояса, который используется во всех функциях даты / времени. Этот процесс объясняется на странице функции date_default_timezone_get ().
Попробуйте настроить свой часовой пояс .
я думаю, вероятно, будет один раз каждый программист php, что эта функция заставит его действительно понять, как работает php с функциями даты и времени.
смешно эта функция, когда вы пытаетесь что-то вроде … err … например, предположите, что сегодня в этот самый момент 11 июля 2012 года в 13:00:00 (2012-07-11 13:00:00), а затем вы пытаетесь strtotime найти точно такой же момент дня, но на завтра:
 $x = strtotime('2012-07-12 13:00:00'); $y = strtotime('+1 Day'); $z = $x-$y; 
$ x и $ y из вышеперечисленных первых двух строк не возвратят то же самое, даже если вы проигнорируете минуты и секунды, но $ z будет около 25200 или около 7 часов в разнице между этими двумя строками, если ваш сегмент находится где-то из США, что GMT составляет -5 часов, но ваш браузер вызывает эту функцию от берлина летом, где GMT +2 часа … LOL теперь вы можете понять, как работает php с этой функцией;)