Это нормально, что эта строка:
echo date("Ymd h:m:sa", strtotime('2012-03-18 12:55:00')) 
дает мне 2012-03-18 12:03:00 pm
Какими бы ни были мои минуты, я всегда получаю 03 минут … странно.
Формат вашей даты:
 Ymd h:i:sa 
Документация PHP имеет это, чтобы сказать о форматировании локального времени / даты –
i – минуты с ведущими нулями m – числовое представление месяца, с ведущими нулями   То, что вы видели как 03 было на самом деле месяцем – март 🙂 
  Это потому, что m в функции даты представляет месяцы, а не минуты.  В течение нескольких минут вы хотите использовать i : 
 Ymd h:i:sa 
  В функции date PHP используется код минут: i not m : 
 echo date("Ymd h:i:sa", strtotime('2012-03-18 12:55:00')) 
  Ваши «минуты» на самом деле «месяцы».  Используйте i качестве вашего кода даты: 
 echo date("Ymd h:i:sa", strtotime('2012-03-18 12:55:00'))