isClean
00:00:00 に設定されている場合、時間を自動的に削除するように設定するにはどうすればよいですか。したがって、時間が設定されていない場合や真夜中の場合は、何も表示されません。
/**
* 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>
ます。
したがって、この方法の主な理由は次のとおりです。
- XML オプションを php datetime に接続します。
- NOW、相対日付などの追加機能を追加し、0 に設定した場合に日時をクリーンアップする機能を追加