Source for file jDuration.class.php

Documentation is available at jDuration.class.php

  1. <?php
  2. /**
  3. @package     jelix
  4. @subpackage  utils
  5. @author      Florian Hatat
  6. @contributor Laurent Jouanneau
  7. @copyright   2008 Florian Hatat, 2010 Laurent Jouanneau
  8. @link        http://www.jelix.org
  9. @licence     http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  10. */
  11.  
  12. /**
  13.  * Utility to manipulate durations between two instants
  14.  * @package     jelix
  15.  * @subpackage  utils
  16.  */
  17. class jDuration {
  18.     public $months;
  19.     public $days;
  20.     public $seconds;
  21.  
  22.     /**
  23.      * Construct a new duration.
  24.      * You can specify the duration as a number of seconds, or as an associative
  25.      * array which may contain the keys "year", "month", "day", "hour", "minute"
  26.      * and "second". The former method defines an absolute duration (it will
  27.      * always add the same number of seconds to any given date/time), while the
  28.      * latter defines a relative duration (a duration of one month will for
  29.      * example represent different amounts of time depending on the start date).
  30.      *
  31.      * This class represents years as 12 months, minutes as 60 seconds and hours
  32.      * as 3600 seconds. There is no general conversion between months and days,
  33.      * nor between days and hours (because of DST).
  34.      *
  35.      * @param int,array $init representation of the duration as an absolute number of seconds, or an array.
  36.      */
  37.     function __construct($init 0){
  38.         $this->days = $this->months = $this->seconds = 0;
  39.  
  40.         if(is_array($init)){
  41.             if(isset($init['year'])){
  42.                 $this->months += intval($init['year']12;
  43.             }
  44.  
  45.             if(isset($init['month'])){
  46.                 $this->months += intval($init['month']);
  47.             }
  48.  
  49.             if(isset($init['day'])){
  50.                 $this->days += intval($init['day']);
  51.             }
  52.  
  53.             if(isset($init['hour'])){
  54.                 $this->seconds += intval($init['hour']3600;
  55.             }
  56.  
  57.             if(isset($init['minute'])){
  58.                 $this->seconds += intval($init['minute']60;
  59.             }
  60.  
  61.             if(isset($init['second'])){
  62.                 $this->seconds += intval($init['second']);
  63.             }
  64.         }
  65.         elseif (is_int($init)) {
  66.             if ($init 86400{
  67.                 $this->days = intval($init/86400);
  68.                 $this->seconds = $init 86400;
  69.             }
  70.             else {
  71.                 $this->seconds = $init;
  72.             }
  73.         }
  74.     }
  75.  
  76.     /**
  77.      * Add a duration to the current duration
  78.      * @param jDuration $data the duration value
  79.      */
  80.     function add(jDuration $data){
  81.         $this->days += $data->days;
  82.         $this->months += $data->months;
  83.         $this->seconds += $data->seconds;
  84.     }
  85.  
  86.     /**
  87.      * Multiply the current duration by an integer
  88.      * @param int $scale the scaling integer
  89.      */
  90.     function mult($scale){
  91.         if(is_int($scale)){
  92.             $this->days *= $scale;
  93.             $this->months *= $scale;
  94.             $this->seconds *= $scale;
  95.         }
  96.     }
  97. }

Documentation generated on Thu, 19 Sep 2013 00:04:14 +0200 by phpDocumentor 1.4.3