"Kadar zaman" nasıl hesaplanır

1 Cevap php

Ben çalışmak için iki Zend tarihi nesneleri var:

$now = Zend_Date::now();
$sessionStart = new Zend_Date('2010-04-01 10:00:00', 'yyyy-MM-dd HH:mm:ss');

Ben kalan süresini hesaplamak ve bir insan okunabilir şekilde görüntülemek gerekir.

The session will begin in 7 days.
The session will begin in 30 minutes.

Ben bu PHP ve Zend Framework ile nasıl yapabilirim?

Solution

Burada ben ile geldi budur. Eğer daha iyi bir çözüm var ise, bunu yayınlayın lütfen.

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

1 Cevap

documentation Bu oldukça iyi açıklamaktadır:

Yöntemleri (), alt () eklemek) (karşılaştırma, () olsun, ve set () tarihleri ​​jenerik çalışır. Her iki durumda da, işlem örnek nesnesi düzenlenen tarihte gerçekleştirilir. $ Tarih işlenen get () hariç, bu yöntemlerin hepsi için gerekli olan ve bir Zend_Date örnek bir nesne, bir sayısal dize veya bir tamsayı olabilir.

Yani:

$sessionStart->sub($now);

bunu yapmak gerekir.

Çıkış tarif nasıl özelleştirmek için this section.

Update:
Here is an example I found on the internet:

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

Bu sitede, yorum da şöyle:

Sub () yöntemi alıcı ve argüman tarihleri ​​arasında milisaniye farkı döndürür