note 105257 deleted from function.time by cmb

From: Date: Sun, 01 Aug 2021 14:57:18 +0000
Subject: note 105257 deleted from function.time by cmb
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-216710@lists.php.net to get a copy of this message
Note Submitter: dev dot ivangc at gmail dot com ---- Here a class extension to get the a datetime in the "X time ago" format easily. <?php class Cokidoo_DateTime extends DateTime { protected $strings = array( 'y' => array('1 year ago', '%d years ago'), 'm' => array('1 month ago', '%d months ago'), 'd' => array('1 day ago', '%d days ago'), 'h' => array('1 hour ago', '%d hours ago'), 'i' => array('1 minute ago', '%d minutes ago'), 's' => array('now', '%d secons ago'), ); /** * Returns the difference from the current time in the format X time ago * @return string */ public function __toString() { $now = new DateTime('now'); $diff = $this->diff($now); foreach($this->strings as $key => $value){ if( ($text = $this->getDiffText($key, $diff)) ){ return $text; } } return ''; } /** * Try to construct the time diff text with the specified interval key * @param string $intervalKey A value of: [y,m,d,h,i,s] * @param DateInterval $diff * @return string|null */ protected function getDiffText($intervalKey, $diff){ $pluralKey = 1; $value = $diff->$intervalKey; if($value > 0){ if($value < 2){ $pluralKey = 0; } return sprintf($this->strings[$intervalKey][$pluralKey], $value); } return null; } } ?> How to use: <?php $date = new Cokidoo_Datetime('2011-01-01'); echo $date; ?>

« previous php.notes (#216710) next »