_TimeZoneImpl::_TimeZoneImpl(void)
: __pIcuTimeZone(null)
+ , __dstSaving(60)
, __dstStartingYear(0)
, __startingRule(MONTH_UNDEFINED, DAY_UNDEFINED)
, __endingRule(MONTH_UNDEFINED, DAY_UNDEFINED)
_TimeZoneImpl::_TimeZoneImpl(int rawOffset, const String& id)
: __pIcuTimeZone(null)
+ , __dstSaving(60)
, __dstStartingYear(0)
, __startingRule(MONTH_UNDEFINED, DAY_UNDEFINED)
, __endingRule(MONTH_UNDEFINED, DAY_UNDEFINED)
_TimeZoneImpl::_TimeZoneImpl(int rawOffset, const String& id, const TimeRule& startRule, const TimeRule& endRule, int dstOffset)
: __pIcuTimeZone(null)
+ , __dstSaving(dstOffset)
, __dstStartingYear(0)
, __startingRule(MONTH_UNDEFINED, DAY_UNDEFINED)
, __endingRule(MONTH_UNDEFINED, DAY_UNDEFINED)
_TimeZoneImpl::_TimeZoneImpl(const _TimeZoneImpl& otherTimeZone)
: __pIcuTimeZone(null)
+ , __dstSaving(otherTimeZone.__dstSaving)
, __dstStartingYear(otherTimeZone.__dstStartingYear)
, __startingRule(otherTimeZone.__startingRule)
, __endingRule(otherTimeZone.__endingRule)
_TimeZoneImpl::_TimeZoneImpl(U_ICU_NAMESPACE::TimeZone* pIcuTimeZone)
: __pIcuTimeZone(null)
+ , __dstSaving(60)
, __dstStartingYear(0)
, __startingRule(MONTH_UNDEFINED, DAY_UNDEFINED)
, __endingRule(MONTH_UNDEFINED, DAY_UNDEFINED)
_TimeZoneImpl::_TimeZoneImpl(U_ICU_NAMESPACE::TimeZone* pIcuTimeZone, UDate icuDate)
: __pIcuTimeZone(null)
+ , __dstSaving(60)
, __dstStartingYear(0)
, __startingRule(MONTH_UNDEFINED, DAY_UNDEFINED)
, __endingRule(MONTH_UNDEFINED, DAY_UNDEFINED)
, __isCustomizing(false)
{
__pIcuTimeZone = pIcuTimeZone;
-
U_ICU_NAMESPACE::BasicTimeZone* pIcuTz = dynamic_cast<U_ICU_NAMESPACE::BasicTimeZone*>(pIcuTimeZone);
if (pIcuTz)
{
{
GetTimeRuleFromIcuDateTimeRule(pStd->getRule(), __endingRule);
__dstStartingYear = pDst->getStartYear();
+ __dstSaving = pIcuTz->getDSTSavings() / ONE_MIN_IN_MILLISEC;
}
}
-
delete pInitial;
delete pStd;
delete pDst;
if (*this != otherTimeZone)
{
__pIcuTimeZone = otherTimeZone.__pIcuTimeZone;
+ __dstSaving = otherTimeZone.__dstSaving;
__dstStartingYear = otherTimeZone.__dstStartingYear;
__startingRule = otherTimeZone.__startingRule;
__endingRule = otherTimeZone.__endingRule;
int
_TimeZoneImpl::GetDstSavings(void) const
{
- return __pIcuTimeZone->getDSTSavings() / ONE_MIN_IN_MILLISEC;
+ if (__isCustomizing)
+ {
+ return __pIcuTimeZone->getDSTSavings() / ONE_MIN_IN_MILLISEC;
+ }
+ return __dstSaving;
}
void
__pIcuTimeZone = pStz;
}
pStz->setDSTSavings(dstSavings * ONE_MIN_IN_MILLISEC, ec);
+ __dstSaving = dstSavings;
__isCustomizing = true;
}