/** * @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; }
/** * @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; }