Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Wednesday, October 14, 2026

Diff for Metafox/lib/Date/Human.php between version 1.1 and 1.2

version 1.1, 2005/06/05 12:14:12 version 1.2, 2005/11/07 20:37:29
Line 1 
Line 1 
 <?php  <?php
 //  
 // +----------------------------------------------------------------------+  /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 // | PHP Version 4                                                        |  
 // +----------------------------------------------------------------------+  
 // | Copyright (c) 1997-2003 The PHP Group                                |  
 // +----------------------------------------------------------------------+  
 // | This source file is subject to version 2.0 of the PHP license,       |  
 // | that is bundled with this package in the file LICENSE, and is        |  
 // | available at through the world-wide-web at                           |  
 // | http://www.php.net/license/2_02.txt.                                 |  
 // | If you did not receive a copy of the PHP license and are unable to   |  
 // | obtain it through the world-wide-web, please send a note to          |  
 // | license@php.net so we can mail you a copy immediately.               |  
 // +----------------------------------------------------------------------+  
 // | Author: Allan Kent <allan@lodestone.co.za>                           |  
 // +----------------------------------------------------------------------+  
 //  
 // $Id$  
 //  
   
 /**  /**
  * Class to convert date strings between Gregorian and Human calendar formats.   * Class to convert date strings between Gregorian and Human calendar formats
    *
  * The Human Calendar format has been proposed by Scott Flansburg and can be   * The Human Calendar format has been proposed by Scott Flansburg and can be
  * explained as follows:   * explained as follows:
  *  The year is made up of 13 months   *  The year is made up of 13 months
Line 29 
Line 13 
  *  New Years day (00) is a monthless day   *  New Years day (00) is a monthless day
  *  Note: Leap Years are not yet accounted for in the Human Calendar system   *  Note: Leap Years are not yet accounted for in the Human Calendar system
  *   *
  * @since PHP 4.0.4   * PHP versions 4 and 5
  * @author Allan Kent <allan@lodestone.co.za>   *
    * LICENSE: This source file is subject to version 2.02 of the PHP license
    * that is available through the world-wide-web at the following URI:
    * http://www.php.net/license/2_02.txt.  If you did not receive a copy of
    * the PHP License and are unable to obtain it through the web, please
    * send a note to license@php.net so we can mail you a copy immediately.
    *
    * @category   Date and Time
    * @package    Date
    * @author     Allan Kent <allan@lodestone.co.za>
    * @copyright  1997-2005 The PHP Group
    * @license    http://www.php.net/license/2_02.txt  PHP License
    * @version    CVS: $Id$
    * @link       http://pear.php.net/package/Date
    * @since      File available since Release 1.3
    */
   
   /**
    * Class to convert date strings between Gregorian and Human calendar formats
    *
    * The Human Calendar format has been proposed by Scott Flansburg and can be
    * explained as follows:
    *  The year is made up of 13 months
    *  Each month has 28 days
    *  Counting of months starts from 0 (zero) so the months will run from 0 to 12
    *  New Years day (00) is a monthless day
    *  Note: Leap Years are not yet accounted for in the Human Calendar system
    *
    * @author     Allan Kent <allan@lodestone.co.za>
    * @copyright  1997-2005 The PHP Group
    * @license    http://www.php.net/license/2_02.txt  PHP License
    * @version    Release: 1.4.5
    * @link       http://pear.php.net/package/Date
    * @since      Class available since Release 1.3
  */   */
 class Date_Human  class Date_Human
 {  {
   
     /**      /**
      * Returns an associative array containing the converted date information       * Returns an associative array containing the converted date information
      * in 'Human Calendar' format.       * in 'Human Calendar' format.
Line 64  class Date_Human
Line 80  class Date_Human
      */       */
     function gregorianToHuman($day=0, $month=0, $year=0)      function gregorianToHuman($day=0, $month=0, $year=0)
     {      {
         /**          /*
          * Check to see if any of the arguments are empty           * Check to see if any of the arguments are empty
          * If they are then populate the $dateinfo array           * If they are then populate the $dateinfo array
          * Then check to see which arguments are empty and fill           * Then check to see which arguments are empty and fill
Line 82  class Date_Human
Line 98  class Date_Human
         if (empty($year)) {          if (empty($year)) {
             $year = $dateinfo["year"];              $year = $dateinfo["year"];
         }          }
         /**          /*
          * We need to know how many days into the year we are           * We need to know how many days into the year we are
          */           */
         $dateinfo = getdate(mktime(0, 0, 0, $month, $day, $year));          $dateinfo = getdate(mktime(0, 0, 0, $month, $day, $year));
         $dayofyear = $dateinfo["yday"];          $dayofyear = $dateinfo["yday"];
         /**          /*
          * Human Calendar starts at 0 for months and the first day of the year           * Human Calendar starts at 0 for months and the first day of the year
          * is designated 00, so we need to start our day of the year at 0 for           * is designated 00, so we need to start our day of the year at 0 for
          * these calculations.           * these calculations.
Line 97  class Date_Human
Line 113  class Date_Human
          * gets around this.           * gets around this.
          */           */
         $dayofyear--;          $dayofyear--;
         /**          /*
          * 28 days in a month...           * 28 days in a month...
          */           */
         $humanMonthOfYear = floor($dayofyear / 28);          $humanMonthOfYear = floor($dayofyear / 28);
         /**          /*
          * If we are in the first month then the day of the month is $dayofyear           * If we are in the first month then the day of the month is $dayofyear
          * else we need to find the modulus of 28.           * else we need to find the modulus of 28.
          */           */
Line 110  class Date_Human
Line 126  class Date_Human
         } else {          } else {
             $humanDayOfMonth = ($dayofyear) % 28;              $humanDayOfMonth = ($dayofyear) % 28;
         }          }
         /**          /*
          * Day of the week is modulus 7           * Day of the week is modulus 7
          */           */
         $humanDayOfWeek = $dayofyear % 7;          $humanDayOfWeek = $dayofyear % 7;
         /**          /*
          * We can now increment $dayofyear back to it's correct value for           * We can now increment $dayofyear back to it's correct value for
          * the remainder of the calculations           * the remainder of the calculations
          */           */
         $dayofyear++;          $dayofyear++;
         /**          /*
          * $humanDayOfMonth needs to be incremented now - recall that we fudged           * $humanDayOfMonth needs to be incremented now - recall that we fudged
          * it a bit by decrementing $dayofyear earlier           * it a bit by decrementing $dayofyear earlier
          * Same goes for $humanDayOfWeek           * Same goes for $humanDayOfWeek
          */           */
         $humanDayOfMonth++;          $humanDayOfMonth++;
         $humanDayOfWeek++;          $humanDayOfWeek++;
         /**          /*
          * Week of the month is day of the month divided by 7, rounded up           * Week of the month is day of the month divided by 7, rounded up
          * Same for week of the year, but use $dayofyear instead $humanDayOfMonth           * Same for week of the year, but use $dayofyear instead $humanDayOfMonth
          */           */
         $humanWeekOfMonth = ceil($humanDayOfMonth / 7);          $humanWeekOfMonth = ceil($humanDayOfMonth / 7);
         $humanWeekOfYear = ceil($dayofyear / 7);          $humanWeekOfYear = ceil($dayofyear / 7);
         /**          /*
          * Return an associative array of the values           * Return an associative array of the values
          */           */
         return array(          return array(
Line 156  class Date_Human
Line 172  class Date_Human
      */       */
     function HumanToGregorian($day, $month, $year=0)      function HumanToGregorian($day, $month, $year=0)
     {      {
         /**          /*
          * Check to see if the year has been passed through.           * Check to see if the year has been passed through.
          * If not get current year           * If not get current year
          */           */
Line 164  class Date_Human
Line 180  class Date_Human
             $dateinfo = getdate(time());              $dateinfo = getdate(time());
             $year = $dateinfo["year"];              $year = $dateinfo["year"];
         }          }
         /**          /*
          * We need to get the day of the year that we are currently at so that           * We need to get the day of the year that we are currently at so that
          * we can work out the Gregorian Month and day           * we can work out the Gregorian Month and day
          */           */
         $DayOfYear = $month * 28;          $DayOfYear = $month * 28;
         $DayOfYear += $day;          $DayOfYear += $day;
         /**          /*
          * Human Calendar starts at 0, so we need to increment $DayOfYear           * Human Calendar starts at 0, so we need to increment $DayOfYear
          * to take into account the day 00           * to take into account the day 00
          */           */
         $DayOfYear++;          $DayOfYear++;
         /**          /*
          * the mktime() function will correctly calculate the date for out of           * the mktime() function will correctly calculate the date for out of
          * range values, so putting $DayOfYear instead of the day of the month           * range values, so putting $DayOfYear instead of the day of the month
          * will work fine.           * will work fine.
Line 183  class Date_Human
Line 199  class Date_Human
         $GregorianTimeStamp = mktime(0, 0, 0, 1, $DayOfYear, $year);          $GregorianTimeStamp = mktime(0, 0, 0, 1, $DayOfYear, $year);
         return $GregorianTimeStamp;          return $GregorianTimeStamp;
     }      }
   
 }  }
   
 ?>  ?>

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top