#include <unicode/timezone.h>
#include <unicode/basictz.h>
#include <unicode/simpletz.h>
+#include <unicode/tztrans.h>
+#include <unicode/tzrule.h>
#include <FBaseInteger.h>
#include <FBaseSysLog.h>
__dstSaving = pIcuTz->getDSTSavings() / ONE_MIN_IN_MILLISEC;
}
}
+ else
+ {
+ U_ICU_NAMESPACE::TimeZoneTransition transition;
+ bool result = pIcuTz->getPreviousTransition(icuDate, true, transition);
+ if (result)
+ {
+ const U_ICU_NAMESPACE::TimeZoneRule* pTzFromRule = transition.getFrom();
+ const U_ICU_NAMESPACE::TimeZoneRule* pTzToRule = transition.getTo();
+
+ if (pTzFromRule->getDSTSavings())
+ {
+ __dstSaving = pTzFromRule->getDSTSavings() / ONE_MIN_IN_MILLISEC;
+ }
+ else if (pTzToRule->getDSTSavings())
+ {
+ __dstSaving = pTzToRule->getDSTSavings() / ONE_MIN_IN_MILLISEC;
+ }
+ else //if (pTzFromRule->getDSTSavings() == 0 && pTzToRule->getDSTSavings() == 0)
+ {
+ __dstSaving = 0;
+ }
+ }
+ }
delete pInitial;
delete pStd;
delete pDst;
{
TimeSpan ts(ticks);
DateTime date;
- date.SetValue(ts.GetTicks());
+ result r = date.SetValue(ts.GetTicks());
+ SysTryReturnResult(NID_LCL, r == E_SUCCESS, E_INVALID_ARG, "It is an invalid argument.");
int rawOffset = 0;
int dstOffset = 0;