コード例 #1
0
 /**
  * @return short
  */
 function GetDefaultTimeOffset($otherTimeZone = null)
 {
     $timeArray = localtime(time(), true);
     $daylightSaveMinutes = $timeArray['tm_isdst'] * 60;
     $timeOffset = 0;
     $varForSwitch = $otherTimeZone !== null ? $otherTimeZone : $this->DefaultTimeZone;
     switch ($varForSwitch) {
         default:
         case 0:
             return (ConvertUtils::GmtMkTime() - mktime()) / 60;
             break;
         case 1:
             $timeOffset = -12 * 60;
             break;
         case 2:
             $timeOffset = -11 * 60;
             break;
         case 3:
             $timeOffset = -10 * 60;
             break;
         case 4:
             $timeOffset = -9 * 60;
             break;
         case 5:
             $timeOffset = -8 * 60;
             break;
         case 6:
         case 7:
             $timeOffset = -7 * 60;
             break;
         case 8:
         case 9:
         case 10:
         case 11:
             $timeOffset = -6 * 60;
             break;
         case 12:
         case 13:
         case 14:
             $timeOffset = -5 * 60;
             break;
         case 15:
         case 16:
         case 17:
             $timeOffset = -4 * 60;
             break;
         case 18:
             $timeOffset = -3.5 * 60;
             break;
         case 19:
         case 20:
         case 21:
             $timeOffset = -3 * 60;
             break;
         case 22:
             $timeOffset = -2 * 60;
             break;
         case 23:
         case 24:
             $timeOffset = -60;
             break;
         case 25:
         case 26:
             $timeOffset = 0;
             break;
         case 27:
         case 28:
         case 29:
         case 30:
         case 31:
             $timeOffset = 60;
             break;
         case 32:
         case 33:
         case 34:
         case 35:
         case 36:
         case 37:
             $timeOffset = 2 * 60;
             break;
         case 38:
         case 39:
         case 40:
         case 41:
             $timeOffset = 3 * 60;
             break;
         case 42:
             $timeOffset = 3.5 * 60;
             break;
         case 43:
         case 44:
             $timeOffset = 4 * 60;
             break;
         case 45:
             $timeOffset = 4.5 * 60;
             break;
         case 46:
         case 47:
             $timeOffset = 5 * 60;
             break;
         case 48:
             $timeOffset = 5.5 * 60;
             break;
         case 49:
             $timeOffset = 5 * 60 + 45;
             break;
         case 50:
         case 51:
         case 52:
             $timeOffset = 6 * 60;
             break;
         case 53:
             $timeOffset = 6.5 * 60;
         case 54:
         case 55:
             $timeOffset = 7 * 60;
             break;
         case 56:
         case 57:
         case 58:
         case 59:
         case 60:
             $timeOffset = 8 * 60;
             break;
         case 61:
         case 62:
         case 63:
             $timeOffset = 9 * 60;
             break;
         case 64:
         case 65:
             $timeOffset = 9.5 * 60;
             break;
         case 66:
         case 67:
         case 68:
         case 69:
         case 70:
             $timeOffset = 10 * 60;
             break;
         case 71:
             $timeOffset = 11 * 60;
             break;
         case 72:
         case 73:
             $timeOffset = 12 * 60;
             break;
         case 74:
             $timeOffset = 13 * 60;
             break;
     }
     return $timeOffset + $daylightSaveMinutes;
 }
コード例 #2
0
 /**
  * @param string $strDate
  * @return int
  */
 function GetTimeFromString($strDate)
 {
     $dt = time() - CDateTime::GetServerTimeZoneOffset();
     $matches = array();
     $zone = null;
     $off = null;
     $datePattern = '/^(([a-z]*),[\\s]*){0,1}(\\d{1,2}).([a-z]*).(\\d{2,4})[\\s]*(\\d{1,2}).(\\d{1,2}).(\\d{1,2})([\\s]+([+-]?\\d{1,4}))?([\\s]*(\\(?(\\w+)\\)?))?/i';
     if (preg_match($datePattern, $strDate, $matches)) {
         $year = $matches[5];
         $month = ConvertUtils::GetMonthIndex(strtolower($matches[4]));
         if ($month == -1) {
             $month = 1;
         }
         $day = $matches[3];
         $hour = $matches[6];
         $minute = $matches[7];
         $second = $matches[8];
         $dt = ConvertUtils::GmtMkTime($hour, $minute, $second, $month, $day, $year);
         if (isset($matches[13])) {
             $zone = strtolower($matches[13]);
         }
         if (isset($matches[10])) {
             $off = strtolower($matches[10]);
         }
     }
     $dt = ConvertUtils::ApplyOffsetForDate($dt, $off, $zone);
     return $dt;
 }