diff --git a/headers/os/locale/TimeZone.h b/headers/os/locale/TimeZone.h index daf154bae7..9c5bc43980 100644 --- a/headers/os/locale/TimeZone.h +++ b/headers/os/locale/TimeZone.h @@ -16,7 +16,11 @@ public: const BString& Code() const; const BString& Name() const; + const BString& DaylightSavingName() const; + const BString& ShortName() const; + const BString& ShortDaylightSavingName() const; int OffsetFromGMT() const; + bool SupportsDaylightSaving() const; status_t InitCheck() const; @@ -27,7 +31,11 @@ public: private: BString fCode; BString fName; + BString fDaylightSavingName; + BString fShortName; + BString fShortDaylightSavingName; int fOffsetFromGMT; + bool fSupportsDaylightSaving; status_t fInitStatus; }; diff --git a/src/kits/locale/TimeZone.cpp b/src/kits/locale/TimeZone.cpp index f08e04100f..be54a148ac 100644 --- a/src/kits/locale/TimeZone.cpp +++ b/src/kits/locale/TimeZone.cpp @@ -35,6 +35,27 @@ BTimeZone::Name() const } +const BString& +BTimeZone::DaylightSavingName() const +{ + return fDaylightSavingName; +} + + +const BString& +BTimeZone::ShortName() const +{ + return fShortName; +} + + +const BString& +BTimeZone::ShortDaylightSavingName() const +{ + return fShortDaylightSavingName; +} + + const BString& BTimeZone::Code() const { @@ -49,6 +70,13 @@ BTimeZone::OffsetFromGMT() const } +bool +BTimeZone::SupportsDaylightSaving() const +{ + return fSupportsDaylightSaving; +} + + status_t BTimeZone::InitCheck() const { @@ -71,10 +99,27 @@ BTimeZone::SetTo(const char* zoneCode) unicodeString.toUTF8(converter); unicodeString.remove(); - icuTimeZone->getDisplayName(unicodeString); + icuTimeZone->getDisplayName(false, TimeZone::LONG, unicodeString); converter.SetTo(&fName); unicodeString.toUTF8(converter); + unicodeString.remove(); + icuTimeZone->getDisplayName(true, TimeZone::LONG, unicodeString); + converter.SetTo(&fDaylightSavingName); + unicodeString.toUTF8(converter); + + unicodeString.remove(); + icuTimeZone->getDisplayName(false, TimeZone::SHORT, unicodeString); + converter.SetTo(&fShortName); + unicodeString.toUTF8(converter); + + unicodeString.remove(); + icuTimeZone->getDisplayName(true, TimeZone::SHORT, unicodeString); + converter.SetTo(&fShortDaylightSavingName); + unicodeString.toUTF8(converter); + + fSupportsDaylightSaving = icuTimeZone->useDaylightTime(); + int32_t rawOffset; int32_t dstOffset; UDate nowMillis = 1000 * (double)time(NULL);