Comunidad oficial de diseñadores web, web developers y Webmasters. Aqui podemos tratar temas actuales sobre diseño y tecnología. Podemos compartir y actualizarnos. Photoshop, Flash, PHP, ASP, Java, HTML, CSS, MySQL, CMS, etc. Unite YA y lee los Sticky
Ver más- 13,065 Miembros
- 9,531 Temas
- 3,449 Seguidores
[Solucionado] hace cuanto tiempo de un datetime
- 1Calificación
- 1Seguidores
- 135Visitas
- 0Favoritos
Global
Argentina
Chile
Colombia
España
México
Perú
Uruguay
Venezuela
9 respuestas
Realmente no se entiende
digamos yo tengo un campo datetime en la db con el valor 2011-12-12 20:37:26, yo quiero una funcion que eso me lo pase a hace 1 min, hace una hora,hace 1 dia, hace 1 semana ... etc. Espero se entienda mejor.
¿Algo así como Taringa!?
habían hecho un aporte en la comunidad para hacer eso, buscaste?
http://www.taringa.net/comunidades/webdesign/630837/_APORTE_-plugin-jQuery-para-mostrar-diferencia-de-tiempo.html
En una simple función PHP podrás realizar este cambio.
Tengo una hecha, está en una de mis posts...
<?php
function fechatiempo($time) {
if( !is_numeric($time) ) $time = strtotime($time);
$elapsed = time() - $time;
$a = array(
12 * 30 * 24 * 60 * 60 => 'año',
30 * 24 * 60 * 60 => 'mes',
24 * 60 * 60 => 'día',
60 * 60 => 'hora',
60 => 'minuto',
1 => 'segundo'
);
foreach ($a as $secs => $str) {
$d = $elapsed / $secs;
if ($d >= 1) {
$r = round($d);
if($str == 'día' and $r == 1) return 'Ayer';
if($str == 'mes' and $r > 1) $str .= 'e';
return 'Hace '.$r.' '.$str.($r > 1 ? 's' : '');
}
}
}
?>
[code]
¿Cómo incluirla?
Fácil..
[code]
<?php
$fecha = "2012-01-23";
echo fechatiempo($fecha);
?>
Espero que te sirva,
Abrazo.
yo tengo esta funcion en un sistema
<?php
function _date_diff($start, $end="NOW")
{
$sdate = strtotime($start);
$edate = strtotime($end);
$time = ($edate > $sdate) ? $edate - $sdate : $sdate - $edate;
if($time>=0 && $time<=59) {
// Seconds
$timeshift = $time.' seconds ';
} elseif($time>=60 && $time<=3599) {
// Minutes + Seconds
$pmin = ($edate - $sdate) / 60;
$premin = explode('.', $pmin);
$presec = $pmin-$premin[0];
$sec = $presec*60;
$timeshift = $premin[0].' min'.(($premin[0] > 1) ? 's':'').' '.round($sec,0).' sec'.(($sec[0] > 1) ? 's':'').' ';
} elseif($time>=3600 && $time<=86399) {
// Hours + Minutes
$phour = ($edate - $sdate) / 3600;
$prehour = explode('.',$phour);
$premin = $phour-$prehour[0];
$min = explode('.',$premin*60);
$timeshift = $prehour[0].' hr'.(($prehour[0] > 1) ? 's':'').' '.$min[0].' min'.(($min[0] > 1) ? 's':'').' ';
} elseif($time>=86400) {
// Days + Hours + Minutes
$pday = ($edate - $sdate) / 86400;
$preday = explode('.',$pday);
$phour = $pday-$preday[0];
$prehour = explode('.',$phour*24);
$premin = ($phour*24)-$prehour[0];
$min = explode('.',$premin*60);
$timeshift = $preday[0].' day'.(($preday[0] > 1) ? 's':'').' '.$prehour[0].' hr'.(($prehour[0] > 1) ? 's':'');
//$timeshift = $preday[0].' days '.$prehour[0].' hrs '.$min[0].' min '.round($sec,0).' sec ';
}
return $timeshift;
}
//Ejemplo
echo _date_diff('2011-12-12 20:37:26');
//-> 42 days 9 hrs
echo _date_diff('2011-12-12 10:37:26','2011-12-12 20:37:26');
//-> 10 hrs 0 min
echo _date_diff('2011-12-11 19:15:26','2011-12-12 20:37:26');
//-> 1 day 1 hr
?>
exactamente
Perfecto gente con estos dos me arreglo gracias por la ayuda.