diff options
Diffstat (limited to 'mobile_src/TimeUtil/TZDate.h')
-rwxr-xr-x | mobile_src/TimeUtil/TZDate.h | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/mobile_src/TimeUtil/TZDate.h b/mobile_src/TimeUtil/TZDate.h new file mode 100755 index 0000000..a7c06eb --- /dev/null +++ b/mobile_src/TimeUtil/TZDate.h @@ -0,0 +1,119 @@ +// +// Tizen Web Device API +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + + + + +#ifndef _TZDATE_H_ +#define _TZDATE_H_ + +#include <string> +#include <ctime> + +#include <unicode/calendar.h> +#include <unicode/timezone.h> + +#include "TZDateProperties.h" +#include "DurationProperties.h" + +namespace DeviceAPI { +namespace Time { + +class TZDate +{ + + public: + enum TZDateFields { + TZDATE_ERA, + TZDATE_YEAR, + TZDATE_MONTH, + TZDATE_WEEK_OF_YEAR, + TZDATE_WEEK_OF_MONTH, + TZDATE_DATE, + TZDATE_DAY_OF_YEAR, + TZDATE_DAY_OF_WEEK, + TZDATE_DAY_OF_WEEK_IN_MONTH, + TZDATE_AM_PM, + TZDATE_HOUR, + TZDATE_HOUR_OF_DAY, + TZDATE_MINUTE, + TZDATE_SECOND, + TZDATE_MILLISECOND, + TZDATE_ZONE_OFFSET, + TZDATE_DST_OFFSET, + + TZDATE_FIELDS_COUNT, + }; + + enum DSTTransition { + PREV_TRANSITION, + NEXT_TRANSITION + }; + + TZDate(const bool isNotNull = true); + TZDate(const std::string &timezone); + TZDate(const TZDateProperties &properties); + TZDate(const std::string &dateString, const double milliseconds, const std::string &timezone); + virtual ~TZDate(); + + bool isNull(); + long get(const TZDateFields field); + std::string getTimezone(); + TZDateProperties toTimezone(const std::string timezone); + void set(const TZDateFields field, const long value); + + long getUTC(const TZDateFields field); + void setUTC(const TZDateFields field, const long value); + + long long difference(const TZDateProperties &prop); + TZDateProperties addDuration(const DurationProperties &duration); + std::string getUTCTimezoneName(); + std::string getLocalTimezoneName(); + TZDateProperties makeProperties(); + + double getTime(); + bool setTime(const double time); + std::string toDateString(bool bLocale = false) ; + std::string toTimeString(bool bLocale = false); + std::string toString(bool bLocale = false); + + std::string getTimezoneAbbreviation(); + long secondsFromUTC(); + bool isDST(); + TZDateProperties getDSTTransition(DSTTransition trans); + bool isAvailableTimezone(const std::string &timezone); + bool isAvailableTimezone(icu::TimeZone *tz); + private: + long _get(const TZDateFields field, icu::Calendar *cal); + void _set(const TZDateFields field, const long value, icu::Calendar *cal); + std::string _getTimezoneName(icu::Calendar *cal); + const UCalendarDateFields _convertDateField(const TZDateFields field); + + icu::Calendar * _makeCalendar(const std::string &timezone); + icu::Calendar * _makeCalendar(const TZDateProperties &properties); + TZDateProperties _makeProperties(icu::Calendar *cal); + + icu::Calendar *myCalendar; + +}; + +typedef DPL::SharedPtr<TZDate> TZDatePtr; + +} +} + +#endif /* _DATETIME_H_ */ |