免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2227 | 回复: 1
打印 上一主题 下一主题

date()函数是如何格式化第二个参数的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-03 16:26 |只看该作者 |倒序浏览
先看如下示例:
<?php

$today = date("Y-m-d H:i:s", "1980885745");

echo $today;

?>

上面示例输出结果:
2032-10-09 06:02:25

我再将第二个参数改了一下,改为1180885745,就是将开头的19改为11,再运行,输出如下结果:
2007-06-03 23:49:05

大家看年份由2032年变为2007年了,再改动其他数字,会得出不同的结果,对照手册看来看去,还是不理解date()函数是如何取参数值的?上面的参数应该是秒数,但从上面的测试来看,前面的二位应该是代表年份,如果将开头的两位改为不同的值,就会得出不同的结果,同样,其他的参数改为不同的值也会输出不同的结果,手册中看来看去的,没看到更详细的说法,所以向大家求教一下:这个date()函数是如何取值的?看起来应该是根据不同位置的数字来运算结果值的,并不是将数有的值合起来运算的,希望得到大家的指点,谢谢。

论坛徽章:
0
2 [报告]
发表于 2007-09-03 16:43 |只看该作者
第一个参数就是秒数,是从 UNIX 时间起始(1970 年 1 月 1 日 0 时 0 分 0 秒 UTC)到现在所经过的秒数。由于这个数字慢慢变大,所以数字的前几位改变的话变化就会越来越大。例如:

3600 秒 = 一个小时,而 7200 秒 = 两个小时,(36 换成 72)你能说前面两位是代表小时么?不能,它还是秒数。同理 86400 秒 = 1 天,把前两位改一改,自然这个天数就会不停变动,但 86400 的单位还是秒。

关于格式化输出的问题,简单一点想,如果要算从 Unix 时间起始到现在大概经过了多少年怎么算?

就用 $timestamp / (3600*24*365) 就可以了,当然 PHP 本身是应该有更优化的算法的,但基本思路是这样。

能不能给 10 分?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP