Mejores fechas legibles

Wordpress Icon

Jason Bobich es un diseñador web y publicó en su blog la mejor manera de agregar fechas legibles a tu theme, creó una función que te permite agrega a los post el tiempo que ha pasado desde que se hizo esa publicación, al estilo del timeline de twitter, “Time Ago”. Hay varias funciones que hace esto pero la de Jason cuenta desde los segundos, minutos, días, semanas, meses y años que han pasado.

[php]
//funcion para calcular el tiempo "time ago"
function themeblvd_time_ago() {

global $post;

$date = get_post_time(‘G’, true, $post);

/**
* Where you see ‘themeblvd’ below, you’d
* want to replace those with whatever term
* you’re using in your theme to provide
* support for localization.
*/

// Array of time period chunks
$chunks = array(
array( 60 * 60 * 24 * 365 , __( ‘año’, ‘themeblvd’ ), __( ‘años’, ‘themeblvd’ ) ),
array( 60 * 60 * 24 * 30 , __( ‘mes’, ‘themeblvd’ ), __( ‘meses’, ‘themeblvd’ ) ),
array( 60 * 60 * 24 * 7, __( ‘semana’, ‘themeblvd’ ), __( ‘semanas’, ‘themeblvd’ ) ),
array( 60 * 60 * 24 , __( ‘día’, ‘themeblvd’ ), __( ‘días’, ‘themeblvd’ ) ),
array( 60 * 60 , __( ‘hora’, ‘themeblvd’ ), __( ‘horas’, ‘themeblvd’ ) ),
array( 60 , __( ‘minuto’, ‘themeblvd’ ), __( ‘minutos’, ‘themeblvd’ ) ),
array( 1, __( ‘segundo’, ‘themeblvd’ ), __( ‘segundos’, ‘themeblvd’ ) )
);

if ( !is_numeric( $date ) ) {
$time_chunks = explode( ‘:’, str_replace( ‘ ‘, ‘:’, $date ) );
$date_chunks = explode( ‘-’, str_replace( ‘ ‘, ‘-’, $date ) );
$date = gmmktime( (int)$time_chunks[1], (int)$time_chunks[2], (int)$time_chunks[3], (int)$date_chunks[1], (int)$date_chunks[2], (int)$date_chunks[0] );
}

$current_time = current_time( ‘mysql’, $gmt );
$newer_date = ( !$newer_date ) ? strtotime( $current_time ) : $newer_date;

// Difference in seconds
$since = $newer_date – $date;

// Something went wrong with date calculation and we ended up with a negative date.
if ( 0 > $since )
return __( ‘un momento’, ‘themeblvd’ );

/**
* We only want to output one chunks of time here, eg:
* x years
* xx months
* so there’s only one bit of calculation below:
*/

//Step one: the first chunk
for ( $i = 0, $j = count($chunks); $i < $j; $i++) {
$seconds = $chunks[$i][0];

// Finding the biggest chunk (if the chunk fits, break)
if ( ( $count = floor($since / $seconds) ) != 0 )
break;
}
// Set output var
$output = ( 1 == $count ) ? ’1 ‘. $chunks[$i][1] : $count . ‘ ‘ . $chunks[$i][2];
if ( !(int)trim($output) ){
$output = ’0 ‘ . __( ‘segundos’, ‘themeblvd’ );
}
$output .= __(”, ‘themeblvd’);
return $output;
}
[/php]

Para usarla:

[php]
<?php echo ‘Hace ‘. themeblvd_time_ago(); ?>
[/php]

Se recomienda que la configuración horaria de wordpress sea la misma que la del servidor donde se esté ejecutando, ya que puede ocasionar variaciones en los resultados con fechas negativas.

Recomendado