PHP 日期运算等若干例

[size=large]1.时区问题[/size]
date()函数是获取服务器时间的函数。但在不同的主机上,在同一个时间内,可能由于时区不同获取的时间值不同。
从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的。也就是显示的时间(无论用什么php命令)都是格林威治标准时间,和我们的时间(北京时间)差了正好8个小时.
可以用以下两种方法解决:
1). 修改php.ini文件,查找 ;date.timezone = ,把前面的分号去掉在 "="后面加上时区
比如:Asia/Chongqing (重庆),Asia/Shanghai (上海),Asia/Urumqi (乌鲁木齐),Asia/Macao (澳门),Asia/Hong_Kong (香港),Asia/Taipei (台北)
重启http服务器 如apache2即可。

2). 如果你没有修改php.ini的权限那么就在你写程序时在调用data()函数之前加上一句 " date_default_timezone_set("时区");
比如:

date_default_timezone_set ("Asia/Chongqing");
echo date("Y-m-d H:i:s");


[size=large]2. 给定两个日期时间串(如2010-03-21 04:26:21),计算出间隔时间是否超过一天[/size]
$date1=strtotime('2010-03-21 04:26:21');
$date2=strtotime('2010-03-22 04:26:19');
$secondsInOneDay = 60 * 60 * 24;
$period = $date2 - $date1;
if($period >= $secondsInOneDay) {
echo '超过一天';
} else {
echo '不到一天';
}


3. 计算7天前的日期串并输出

<?php
$d = time() - 60 * 60 * 24 * 3;
echo date('Y-m-d', $d);


4. 顺便提下Magento
Magento的Mage_Core_Model_Resource_Abstract有个方法formateDate,下例

$days = 7;
$d = $resModel->formatDate(time() - 60 * 60 * 24 * 7);
echo $d;

可以输出形如:2010-03-22 04:26:19 的字符串用来数据库条件查询等

Magento的Mage_Core_Block_Abstract也有一个fomateDate方法,不过是对形如2010-03-22 04:26:19这样的数据库常用的日期字段串的格式化,如一条产品review的时间为:2010-03-22 04:26:19,那么
<?php echo $block->formatDate($_review->getCreatedAt()); ?>

上述代码默认使用'short'格式输出: 2010/03/22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值