如何计算;时间到“;使用PHP和Zend框架的特定日期?
我有两个Zend Date对象要处理:如何计算;时间到“;使用PHP和Zend框架的特定日期?,php,zend-framework,date,Php,Zend Framework,Date,我有两个Zend Date对象要处理: $now = Zend_Date::now(); $sessionStart = new Zend_Date('2010-04-01 10:00:00', 'yyyy-MM-dd HH:mm:ss'); 我需要计算剩余时间并以可读的方式显示 The session will begin in 7 days. The session will begin in 30 minutes. 如何使用PHP和Zend框架实现这一点 解决方案 这是我想到的。如果您
$now = Zend_Date::now();
$sessionStart = new Zend_Date('2010-04-01 10:00:00', 'yyyy-MM-dd HH:mm:ss');
我需要计算剩余时间并以可读的方式显示
The session will begin in 7 days.
The session will begin in 30 minutes.
如何使用PHP和Zend框架实现这一点
解决方案
这是我想到的。如果您有更好的解决方案,请发布
$remainingSeconds = $sessionStart->getTimestamp() - $now->getTimestamp();
// or: $remainingSeconds = $sessionStart->sub($now);
$remainingMinutes = $remainingSeconds / 60;
if ($remainingMinutes < 0) {
//session is in the past
return '0 days';
}
if (floor($remainingMinutes) <= 1) {
return '1 minute';
}
if (floor($remainingMinutes) < 60) {
return floor($remainingMinutes) . ' minutes';
}
$remainingHours = $remainingMinutes / 60;
if (floor($remainingHours) <= 1) {
return '1 hours';
}
if (floor($remainingHours) < 24) {
return floor($remainingHours) . ' hours';
}
$remainingDays = $remainingHours / 24;
if (floor($remainingDays) <= 1) {
return '1 day';
}
return floor($remainingDays) . ' days';
$remainingSeconds=$sessionStart->getTimestamp()-$now->getTimestamp();
//或者:$remainingSeconds=$sessionStart->sub($now);
$remainingMinutes=$remainingSeconds/60;
如果($remainingMinutes<0){
//会议已经过去了
返回“0天”;
}
如果(floor($remainingMinutes)描述得很好:
方法add()、sub()、compare()、get()和set()通常在日期上操作。在每种情况下,操作都是在实例对象中保存的日期上执行的。除get()外,所有这些方法都需要$date操作数,并且可以是Zend_日期实例对象、数字字符串或整数
因此:
我应该这样做
中介绍了如何自定义输出
更新:
以下是我在网站上找到的一个示例:
在该网站上,评论还指出:
sub()方法返回接收方日期和参数日期之间的毫秒差
$sessionStart->sub($now);
$jan1 = new Zend_Date('1.12.2009', Zend_Date::DATES);
echo "\nJanuary first: ", $jan1->toString();
$christmas = new Zend_Date('25.12.2009', Zend_Date::DATES);
echo "\nChristmas is on: ", $christmas->toString();
$diff = $christmas->sub($jan1);
echo "\nNumber of days: ", $diff / 60 / 60 / 24;