¿Diferencia de tiempo entre una fecha y la hora actual?

Supongamos que tengo un sitio de videos divertido que muestra videos divertidos para los usuarios. Debajo de cada video, quiero tener una statement que diga “5 segundos atrás”, “31 minutos atrás”, “Ayer”, “2 días atrás”, según la fecha y hora del video.

La marca de tiempo que tengo está en el formato: 2011-10-17 07:08:00 .

No soy muy bueno con las fechas, pero supongo que necesito encontrar la diferencia entre las 2 fecha / hora en segundos, luego decidir si está entre 0 segundos y 60 segundos para mostrar en segundos, o entre 60 segundos y 3600 segundos para mostrar en minutos, o entre 3600sec y 3600x24sec para mostrar en horas, entre 3600x24sec y 3600x24x2sec para mostrar ayer, y así sucesivamente … Creo que debería estar usando strtotime() pero no puedo encontrar la hora actual como esas soluciones que encontré used new date() que parece no funcionar!

¿Cómo puedo hacer esto?

Por cierto, pregunta lateral, cuando inserto 2011-10-17, 7:08PM EDT en una columna de marca de tiempo MySQL, se convierte a 2011-10-17 07:08:00 que es AM. ¿Cómo puedo lograr que se almacene en la AM / PM correcta?

Puede usar las funciones DateTime de php.

 $datetime1 = new DateTime('2011-10-17 07:08:00'); $datetime2 = new DateTime(); $interval = $datetime1->diff($datetime2); echo $interval->format('%R%a days'); 

A partir de ahora, puede usar algunos enunciados if para generar la diferencia horaria en otro formato (segundos, minutos, horas, mes, etc.) según la diferencia de tiempo real. Los formatos para la salida son para encontrar aquí

Puede usar fácilmente las funciones DATEDIFF y TIMEDIFF de MySQL. Ambos juntos le dicen exactamente cuánto tiempo ha pasado.