Leesbare datum
Gepost door Sjaak Ringens op 09-11-2010 15:29.
Met deze functie krijg je een makkelijke, geschatte, tijd terug.
Met deze functie maak je je forum of blog of wat dan ook wat leesbaarder omdat je niet met een datum van het 'jaar tot en met de seconde' werkt, maar met een afgeronde datum.
Geen idee of het echt goed genoeg is voor de library, maar ik vond het wel een grappig functie :)
Bij de voorbeelden staat hoe je het kunt gebruiken, de functie kan met 1 parameter omgaan. Dan vergelijkt hij de datum met vandaag. Als je 2 parameters opgeeft, dan vergelijkt hij deze 2 data.
Bestanden van dit script
readable_date.php
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | <?php
/***
* Requires PHP 5.3.0 or higher
*
* @param DateTime $poDate The date to calculate the difference from.
* @param DateTime $poDate2 The 2nd date if you want to calculate the difference from these two dates.
* @returns String The difference between the given dates or now.
*/
function readable_date( DateTime $poDate, DateTime $poDate2 = null )
{
$oInterval = $poDate->diff( ( null != $poDate2 ) ? $poDate2 : new DateTime( ) );
if( $oInterval->y > 1 )
return $oInterval->format( '%y jaar geleden' );
elseif( $oInterval->y == 1 )
return 'vorig jaar';
if( $oInterval->m > 1 )
return $oInterval->format( '%m maanden geleden' );
elseif( $oInterval->m == 1 )
return 'vorige maand';
if( $oInterval->d > 2 )
return $oInterval->format( '%d dagen geleden' );
elseif( $oInterval->d == 2 )
return 'eergisteren';
elseif( $oInterval->d == 1 )
return 'gisteren';
if( $oInterval->h > 1 )
return $oInterval->format( '%h uur geleden' );
return 'zonet';
}
/** Test **/
$now = new DateTime( '2010-11-09 15:13:44' ); // Om de voorbeelden te laten kloppen!
$dates = array(
new DateTime( '2007-11-01 12:37:33' )
, new DateTime( '2009-11-04 12:37:33' )
, new DateTime( '2010-05-03 12:37:33' )
, new DateTime( '2010-10-06 12:37:33' )
, new DateTime( '2010-11-07 12:37:33' )
, new DateTime( '2010-11-08 12:37:33' )
, new DateTime( '2010-11-09 12:37:33' )
, new DateTime( '2010-11-09 15:10:33' )
);
foreach( $dates as $date )
echo readable_date( $date, $now ) . PHP_EOL;
// Output:
// 3 jaar geleden
// vorig jaar
// 6 maanden geleden
// vorige maand
// eergisteren
// gisteren
// 2 uur geleden
// zonet
/** /Test **/
?> |
Commentaar
09-11-2010 17:04
09-11-2010 19:37
09-11-2010 20:53
10-11-2010 10:20


