Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算;时间到“;使用PHP和Zend框架的特定日期?_Php_Zend Framework_Date - Fatal编程技术网

如何计算;时间到“;使用PHP和Zend框架的特定日期?

如何计算;时间到“;使用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框架实现这一点 解决方案 这是我想到的。如果您

我有两个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框架实现这一点

解决方案 这是我想到的。如果您有更好的解决方案,请发布

$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;