如何将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%地理解这个功能的目的。预期的投入和产出是什么? –