/** * Construct with info from an array. * * @param AgaviTranslationManager The translation manager. * @param string The id. * @param array The zone info data. * * @author Dominik del Bondio <*****@*****.**> * @author The ICU Project * @since 0.11.0 */ protected function constructorOSA(AgaviTranslationManager $tm, $id, array $zoneInfo) { parent::__construct($tm, $id); $this->finalYear = self::MAX_INT; $this->finalMillis = self::MAX_DBL; $this->finalZone = null; foreach ($zoneInfo['rules'] as $rule) { $this->transitions[] = $rule; } $this->types = $zoneInfo['types']; if (!isset($zoneInfo['finalRule'])) { throw new AgaviException($id); } // Subtract one from the actual final year; we actually store final year - 1, // and compare using > rather than >=. This allows us to use INT32_MAX as // an exclusive upper limit for all years, including INT32_MAX. $rawOffset = $zoneInfo['finalRule']['offset'] * AgaviDateDefinitions::MILLIS_PER_SECOND; $this->finalYear = $zoneInfo['finalRule']['startYear'] - 1; // Also compute the millis for Jan 1, 0:00 GMT of the finalYear. This reduces runtime computations. $this->finalMillis = AgaviCalendarGrego::fieldsToDay($zoneInfo['finalRule']['startYear'], 0, 1) * AgaviDateDefinitions::MILLIS_PER_DAY; if ($zoneInfo['finalRule']['type'] == 'dynamic') { $fr = $zoneInfo['finalRule']; $this->finalZone = new AgaviSimpleTimeZone($tm, $rawOffset, $id, $fr['start']['month'], $fr['start']['date'], $fr['start']['day_of_week'], $fr['start']['time'], $fr['start']['type'], $fr['end']['month'], $fr['end']['date'], $fr['end']['day_of_week'], $fr['end']['time'], $fr['end']['type'], $fr['save'] * AgaviDateDefinitions::MILLIS_PER_SECOND); } else { $this->finalZone = new AgaviSimpleTimeZone($tm, $rawOffset, $id); } }
/** * Construct a SimpleTimeZone with the given raw GMT offset, time zone ID, * and times to start and end daylight savings time. To create a TimeZone that * doesn't observe daylight savings time, don't use this constructor; use * SimpleTimeZone(rawOffset, ID) instead. Normally, you should use * TimeZone.createInstance() to create a TimeZone instead of creating a * SimpleTimeZone directly with this constructor. * <P> * Various types of daylight-savings time rules can be specified by using * different values for startDay and startDayOfWeek and endDay and * endDayOfWeek. For a complete explanation of how these parameters work, see * the documentation for setStartRule(). * * @param AgaviTranslationManager The translation Manager * @param int The new SimpleTimeZone's raw GMT offset * @param string The new SimpleTimeZone's time zone ID. * @param int The daylight savings starting month. Month is * 0-based. eg, 0 for January. * @param int The daylight savings starting * day-of-week-in-month. See setStartRule() for a * complete explanation. * @param int The daylight savings starting day-of-week. * See setStartRule() for a complete explanation. * @param int The daylight savings starting time, expressed as the * number of milliseconds after midnight. * @param int Whether the start time is local wall time, local * standard time, or UTC time. Default is local wall time. * @param int The daylight savings ending month. Month is * 0-based. eg, 0 for January. * @param int The daylight savings ending day-of-week-in-month. * See setStartRule() for a complete explanation. * @param int The daylight savings ending day-of-week. * See setStartRule() for a complete explanation. * @param int The daylight savings ending time, expressed as the * number of milliseconds after midnight. * @param int Whether the end time is local wall time, local * standard time, or UTC time. Default is local wall time. * @param int The number of milliseconds added to standard time * to get DST time. Default is one hour. * * @author Dominik del Bondio <*****@*****.**> * @author The ICU Project * @since 0.11.0 */ protected function constructorOISIIIIIIIIIII(AgaviTranslationManager $tm, $rawOffsetGMT, $id, $savingsStartMonth, $savingsStartDay, $savingsStartDayOfWeek, $savingsStartTime, $savingsStartTimeMode, $savingsEndMonth, $savingsEndDay, $savingsEndDayOfWeek, $savingsEndTime, $savingsEndTimeMode, $savingsDST) { parent::__construct($tm, $id); $this->construct($rawOffsetGMT, $savingsStartMonth, $savingsStartDay, $savingsStartDayOfWeek, $savingsStartTime, $savingsStartTimeMode, $savingsEndMonth, $savingsEndDay, $savingsEndDayOfWeek, $savingsEndTime, $savingsEndTimeMode, $savingsDST); }