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

Diff for phpPlatonLib/Date_Week_Magic/Week_Magic.php between version 1.3 and 1.4

version 1.3, 2002/03/31 20:56:32 version 1.4, 2002/05/29 19:40:05
Line 52 
Line 52 
  */   */
 class Date_Week_Magic  class Date_Week_Magic
 {  {
       /**
        * Validate date
        *
        * Validate passed date.
        *
        * @access  public
        * @param   int $year       year (allowed forms: YYYY, YY)
        * @param   int $month      month (from 1 to 12)
        * @param   int $day        day (from 1 to 31)
        * @return  bool            true if is valid date, false otherwise
        */
       function validate($year, $month, $day)
       {
           $timeNowInSeconds = mktime(0, 0, 0, $month, $day, $year);
           $timeNow = localtime($timeNowInSeconds, 1 /* associative */);
   
           if ((($timeNow['tm_year'] >= 100 && $timeNow['tm_year'] - 100 == $year)
                       || ($timeNow['tm_year'] < 100 && $timeNow['tm_year'] == $year)
                       || (1900 + $timeNow['tm_year'] == $year))
                   && $timeNow['tm_mon'] + 1 == $month
                   && $timeNow['tm_mday'] == $day)
           {
               return true;
           }
   
           return false;
       }
   
     /**      /**
      * Get week information for date       * Get week information for date
Line 71  class Date_Week_Magic
Line 98  class Date_Week_Magic
      */       */
     function week($year, $month, $day)      function week($year, $month, $day)
     {      {
         $timeNowInSeconds = mktime(0, 0, 0, $month, $day, $year);          if (Date_Week_Magic::validate($year, $month, $day) == false) {
         $timeNow = localtime($timeNowInSeconds, 1 /* associative */);  
   
         if ((($timeNow['tm_year'] >= 100 && $timeNow['tm_year'] - 100 == $year)  
                     || ($timeNow['tm_year'] < 100 && $timeNow['tm_year'] == $year)  
                     || (1900 + $timeNow['tm_year'] == $year))  
                 && $timeNow['tm_mon'] + 1 == $month  
                 && $timeNow['tm_mday'] == $day)  
             ; // do nothing, date is valid  
         else  
             return false;              return false;
           }
   
           $timeNow = localtime(mktime(0, 0, 0, $month, $day, $year),
                   1 /* associative */);
   
         // Function localtime() 'tm_yday' 0 based, we need it 1 based.          // Function localtime() 'tm_yday' 0 based, we need it 1 based.
         $YearDay_I = $timeNow['tm_yday'] + 1;          $YearDay_I = $timeNow['tm_yday'] + 1;
         $yearNow = $timeNow['tm_year'];          $yearNow   = $timeNow['tm_year'];
   
         // American weeks begin on Sundays. ISO doesn't.          // American weeks begin on Sundays. ISO doesn't.
         $WeekDay_I = $timeNow['tm_wday'];          $WeekDay_I = $timeNow['tm_wday'];
         if (0 == $WeekDay_I)            // if it's Sunday          if (0 == $WeekDay_I) {          // if it's Sunday
             $WeekDay_I = 7;                     // make it Sunday              $WeekDay_I = 7;                     // make it Sunday
           }
   
         $WeekNo_I    = intval($YearDay_I / 7);          $WeekNo_I    = intval($YearDay_I / 7);
         $FirstWeek_I = $YearDay_I % 7;          $FirstWeek_I = $YearDay_I % 7;
Line 102  class Date_Week_Magic
Line 125  class Date_Week_Magic
             $FirstWeek_I += 7;              $FirstWeek_I += 7;
         }          }
   
         if ($FirstWeek_I > (-4))          if ($FirstWeek_I > (-4)) {
             $WeekNo_I += 1;              $WeekNo_I += 1;
           }
   
         if ($FirstWeek_I > 3)          if ($FirstWeek_I > 3) {
             $WeekNo_I += 1;              $WeekNo_I += 1;
           }
   
         if (0 == $WeekNo_I) {          if ($WeekNo_I == 0) {
             // Same as previous year's last day.              // Same as previous year's last day.
   
             $ar = Date_Week_Magic::week($year - 1, 12 /* December is 12 */, 31);              $ar = Date_Week_Magic::week($year - 1, 12 /* December is 12 */, 31);
Line 146  class Date_Week_Magic
Line 171  class Date_Week_Magic
     {      {
         $day = 15;          $day = 15;
   
         while ($week > 53)          while ($week > 53) {
             $week -= 53;              $week -= 53;
           }
   
         $month = intval((11 * $week) / 53); // assume 53 weeks a year          $month = intval((11 * $week) / 53); // assume 53 weeks a year
   
Line 160  class Date_Week_Magic
Line 186  class Date_Week_Magic
             }              }
   
             $getweek = $ar['week'];              $getweek = $ar['week'];
             $getday = $ar['weekday'];              $getday  = $ar['weekday'];
   
             if (($getweek > $week - 3) && ($getweek < $week + 3)) {              if (($getweek > $week - 3) && ($getweek < $week + 3)) {
                 if (($getweek == $week) && ($getday == 1)) {                  if (($getweek == $week) && ($getday == 1)) {
                     break;                      break;
                 }                  }
                 else {                  else {
                     if ($day == 1 && $month == 0)                      if ($day == 1 && $month == 0) {
                         return false;                          return false;
                       }
   
                     if ($getweek < $week) {                      if ($getweek < $week) {
                         if ($week - $getweek > 1) {                          if ($week - $getweek > 1) {

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

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