Zend Date — day difference

前端 未结 6 1499
温柔的废话
温柔的废话 2020-12-17 20:51

I have the below line of codes

$day1 = new Zend_Date(\'2010-03-01\', \'YYYY-mm-dd\');
$day2 = new Zend_Date(\'2010-03-05\', \'YYYY-mm-dd\');
$dateDiff = $da         


        
相关标签:
6条回答
  • 2020-12-17 21:21

    I believe the problem is in your part string. Try YYYY-MM-dd instead.

    $day1 = new Zend_Date('2010-02-28', 'YYYY-MM-dd');
    $day2 = new Zend_Date('2010-03-01', 'YYYY-MM-dd');
    echo $day2->sub($day1)->toString(Zend_Date::DAY);
    
    0 讨论(0)
  • 2020-12-17 21:30
        $cerimonia = new Zend_Date('your date here');
        $days = $cerimonia->sub(Zend_Date::now());
        $days = round($days/86400)+1;
    
    0 讨论(0)
  • 2020-12-17 21:35

    number of days between date of registration (later) and date of purchase (before)

    // $datePurchase instanceof Zend_Date
    // $dateRegistration instanceof Zend_Date
    if($datePurchase && $dateRegistration) {
       $diff = $dateRegistration->sub($datePurchase)->toValue();
       $days = ceil($diff/60/60/24)+1;
     } 
    
    0 讨论(0)
  • 2020-12-17 21:36
    $firstDay = new Zend_Date('2010-02-28', 'YYYY-MM-dd');
    $lastDay = new Zend_Date('2010-03-01', 'YYYY-MM-dd');
    $diff = $lastDay->sub($firstDay)->toValue();
    $days = ceil($diff/60/60/24) +1;
    

    return $days;

    this gives the right answer

    0 讨论(0)
  • 2020-12-17 21:38

    I've extended Zend_Date for my own convenience functions. My solution is similar to Nisanth's, with some key differences:

    1. calculate the beginning of the day for both days before comparing
    2. use round() instead of ceil()
    3. do not add 1 to the result

    Example code:

    class My_Date extends Zend_Date
    {
        public static function now($locale = null)
        {
            return new My_Date(time(), self::TIMESTAMP, $locale);
        }
    
        /**
         * set to the first second of current day
         */
        public function setDayStart()
        {
            return $this->setHour(0)->setMinute(0)->setSecond(0);
        }
    
        /**
         * get the first second of current day
         */
        public function getDayStart()
        {
            $clone = clone $this;
            return $clone->setDayStart();
        }
    
        /**
         * get count of days between dates, ignores time values
         */
        public function getDaysBetween($date)
        {
            // 86400 seconds/day = 24 hours/day * 60 minutes/hour * 60 seconds/minute
            // rounding takes care of time changes
            return round($date->getDayStart()->sub(
                $this->getDayStart()
            )->toValue() / 86400);
        }
    }
    
    0 讨论(0)
  • 2020-12-17 21:42

    If $date is a Zend_Date object you can use the following:

    if ($date->isEarlier(Zend_Date::now()->subDay(2)){
        [...]
    }
    

    or the other subXxx functions of the Zend_Date object.

    0 讨论(0)
提交回复
热议问题