summaryrefslogtreecommitdiff
path: root/mobile_src/TimeUtil/TZDate.h
diff options
context:
space:
mode:
Diffstat (limited to 'mobile_src/TimeUtil/TZDate.h')
-rwxr-xr-xmobile_src/TimeUtil/TZDate.h119
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_ */