format($format); return Self::translate($output); } public static function currentOffset($format, $offset) { $Date = new DateTime(); $Date->modify($offset); $output = $Date->format($format); return Self::translate($output); } // Format a local time/date according to locale settings. public static function format($date, $currentFormat, $outputFormat) { // Returns a new DateTime instance or FALSE on failure. $Date = DateTime::createFromFormat($currentFormat, $date); if ($Date!==false) { $output = $Date->format($outputFormat); return Self::translate($output); } return false; } public static function convertToUTC($date, $currentFormat, $outputFormat) { $Date = DateTime::createFromFormat($currentFormat, $date); $Date->setTimezone(new DateTimeZone('UTC')); $output = $Date->format($outputFormat); return Self::translate($output); } public static function translate($date) { global $Language; // If English default language don't translate if ($Language->currentLanguage()=='en') { return $date; } $dates = $Language->getDates(); return str_replace(array_keys($dates), array_values($dates), $date); } public static function timeago($time) { $time = time() - $time; $tokens = array ( 31536000 => 'year', 2592000 => 'month', 604800 => 'week', 86400 => 'day', 3600 => 'hour', 60 => 'minute', 1 => 'second' ); foreach ($tokens as $unit => $text) { if ($time < $unit) continue; $numberOfUnits = floor($time / $unit); return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':''); } } // DEBUG: Check this function, need to be more fast // Return array('Africa/Abidjan'=>'Africa/Abidjan (GMT+0)', ..., 'Pacific/Wallis'=>'Pacific/Wallis (GMT+12)'); // PHP supported list. http://php.net/manual/en/timezones.php public static function timezoneList() { $tmp = array(); $timezone_identifiers_list = timezone_identifiers_list(); foreach($timezone_identifiers_list as $timezone_identifier) { $date_time_zone = new DateTimeZone($timezone_identifier); $date_time = new DateTime('now', $date_time_zone); $hours = floor($date_time_zone->getOffset($date_time) / 3600); $mins = floor(($date_time_zone->getOffset($date_time) - ($hours*3600)) / 60); $hours = 'GMT' . ($hours < 0 ? $hours : '+'.$hours); $mins = ($mins > 0 ? $mins : '0'.$mins); $text = str_replace("_"," ",$timezone_identifier); $tmp[$timezone_identifier] = $text.' ('.$hours.':'.$mins.')'; } return $tmp; } }