在使用Phpcms v9过程中,很多时候会碰到时间的调用,比如文章的发布时间、更新时间、会员注册时间、登录时间等,有时也会碰到1970-01-01或者时间戳转码的问题,在这里与大家分享Phpcms V9程序调用时间方法及PHP日期时间格式化详解。
首先,我们来了解下PHP里边的时间戳。
广义上讲,时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间。数字时间戳技术是数字签名技术一种变种的应用。
而PHP语言里边说的时间戳,是指Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中(比如Linux系统),也在许多其他操作系统中被广泛采用。
Unix系统规定当前时间的timestamp等于1970年1月1日0点到当前时间之间的秒数,所以当timestamp=0的时候,时间就是1970年1月1日。
php中获取时间戳的方法是:
time(); Date();
现在我们具体说下Phpcms v9里边的时间戳和时间格式化调用:
一般我们是这样标准化调用日期时间:
{date('Y-m-d H:i:s', $r['inputtime'])}
其中$r是根据loop循环来的,输出为:2015-11-02 13:56:32,年月日+时间。
当然也可以具体根据需要调用,比如{date('Y',$rs[inputtime])}年、{date('m',$rs[inputtime])}月、{date('d',$rs[inputtime])}日。
具体说明:
{date('Y',$inputtime);} 4位年份 输出为:2013 或 2014 {date('y',$inputtime);} 2位年份 输出为:10 或 11 {date('F',$inputtime);} 英文月份全称 输出为:January 到 December {date('M',$inputtime); } 英文月份缩写 输出为:Jan 到 Dec {date('m',$inputtime);} 前导零数字月份 输出为:01 到 12 {date('n',$inputtime); } 数字月份 输出为:1 到 12 {date('d',$inputtime);} 前导零日期 输出为:01 到 31 {date('j',$inputtime);} 日期 输出为:1 到 31 {date('l',$inputtime);} 英文星期全称 输出为:Sunday 到 Saturday {date('D',$inputtime);} 英文星期缩写 输出为:Mon 到 Sun {date('N',$inputtime);} 格式数字星期 输出为:1 到 7 {date('Y-m-d H:i:s',$rs[inputtime]+30*60)} 在获取文章时间后加一段时间
再进一步,我们来说说时间戳转换。
php strtotime() 函数将任何英文文本的日期时间描述解析为Unix 时间戳。
phpcms标签里的updatetime和inputtime标签区别:
①updatetime是更新时间(也叫修改时间,就是后台的文章列表看到的时间); ②inputtime是第一次写文章时的发布时间(就是添加文章或者修改文章时缩略图下方的时间)。
Phpcms V9调用发布时间时出现1970年的原因:
如果用{loop $data $k $v}调用,那么就使用{date('Y-m-d H:i:s',$v[inputtime])},对应用“v”调用;如果用{loop $data $r},那么就使用{date('Y-m-d H:i:s',$r[inputtime])},对应用“r”调用。
这是在列表页调用,如果在文章页,直接用{$inputtime}也是可以的。
也就是说,需要注意调用数据的方式,如果调用的数据为空,则显示0,自然就是1970-01-01了。