我在数据库“2014-03-06 16:23:33”中有约会。我想展示“2014年3月6日下午04:23:33 CST”。使用cakephp。
例如:
$this -> Html -> cDate ($courseLog['CourseLog']['completed_time'],'datetimes');
感谢Adv。
尽快回答。
答案 0 :(得分:0)
更新
虽然我最初表示我不确定CakePHP是否有一个特定的助手,我现在几乎完全确定他们 不 。
他们自己的文档只提到DateTime
类和link to the PHP docs
并且github搜索任何名为cDate
shows up empty,CDATA
的内容都是完全不同的......
作为我的评论的后续内容,我将删除,但为了完整性,请在此处添加:
我不知道CakePHP是否有特定的帮助,但是
$date = new DateTime($yourDateString);
$date->format(DATE_RFC820);
应该很接近。根据您的需要Compose your own format,或查看the predefined constants随时可用。
好的,DATE_RFC850
常量与您正在寻找的格式以及字符串操作完全匹配(如substr
和explode
- {{ 1}}电话)只是单调乏味,看起来凌乱和业余。但只需看一下格式参数!
我怀疑你实际上在寻找这样的东西:
implode
从您知道并期望的格式创建$date = new DateTime($courseLog['CourseLog']['completed_time']);
$asString = $date->format('M d, Y h:i:s A e');
实例可能更安全。您知道字符串的格式,因此您也可以使用静态方法DateTime::createFromFormat
:
DateTime
正如您所看到的from this codepad,这非常有效......
格式说明:
$date = DateTime::createFromFormat(
'Y-m-d H:i:s', //yyyy-mm-dd hh:mm:ss format
$courseLog['CourseLog']['completed_time']//the string to parse
);
$asString = $date->format('M d, Y h:i:s A e');
echo $asString, PHP_EOL;
:月份的简短文字表示,M
给出了整整一个月F
:2位数(带前导零)表示当天,更改为d
以删除前导零j
:4位数年份,而Y
则为2位数y
:带有前导零的12小时,h
会丢弃前导零。大写两种格式都可获得24小时版本g
:分钟,带前导零i
:秒,带前导零s
:上午或下午,更改为A
以获取上午或下午 a
:时区标识符,备选方案为e
(时区缩写)或T
和O
(两者与GMT的差异均为小时,P
在小时和分钟之间添加冒号(+0400 vs +04:00)总的来说,PHP附带了P
对象,它已经提供了一种处理日期和时间的可靠方法,我建议您只使用 core 对象。无论CakePHP提供什么,它很可能只是the DateTime
and its related classes