如何將isClean
設置爲自動刪除時間:00:00:00。所以如果沒有設置時間或午夜,那麼不顯示任何東西。php從自定義日期時間格式化中刪除時間
/**
* Perform datetime formatting operations.
* - relative: if today/yesterday
* - clean: remove time if 00:00
*
* @param string $var
* @param string||array $params
* @return string
*/
protected function datetime($var,$params) {
date_default_timezone_set("Europe/London");
// 1970-01-01 00:00:00
$template = $params;
$isRelative = false;
$isClean = false;
if (is_array($params) && !empty($params['template'])) {
if (!empty($params['relative']) && trim(strtolower($params['relative'])) == 'yes') {
$isRelative = true;
}
if (!empty($params['clean']) && trim(strtolower($params['clean'])) == 'yes') {
$isClean = true;
}
$template = $params['template'];
}
// check if its empty or not?
if(strlen($var)<1) return $var;
// ignore invalue request throw error?
if(is_array($template)) return $var;
if($var == "NOW") $var = date("d-m-Y H:i:s");
$out = $var;
if(strpos($out,":") === false) {
$out = trim($out);
$out .= " 00:00:00";
}
if(($timestamp = $this->getTimestamp($out)) !== false) {
if ($isRelative) {
$time = date('H:i', $timestamp);
if (date('Ymd') == date('Ymd', $timestamp)) {
// Today
return sprintf("Today at %s", $time);
} else {
// Yesterday?
$today = strtotime("12:00:00");
$yesterday = strtotime('-1 day', $today);
if (abs($yesterday - $timestamp) < 12*3600) {
return sprintf("Yesterday at %s", $time);
}
}
}
$var = date($template,$timestamp);
}
return $var;
}
更多信息:我們的CMS的工作原理是閱讀<match>
,並自動匹配這對數據庫列名或我們手動寫<format>long_datetime</format>
。
所以這種方法的主要原因是:
- 連接使用PHP的日期時間的XML選項。
- 添加額外的功能,比如現在,相對日期,現在清理日期時間的能力,如果設置爲0
使用datetime對象就能解決了很多的頭痛 –
太多的代碼,這樣一個簡單的任務..... – Baba
另外,我不是100%地理解這個功能的目的。預期的投入和產出是什麼? –