exports.getLocalTimezone = function() {
console.log('Entered TimeUtil.getLocalTimezone');
- var result = native_.callSync('TZDate_getTimezone', {});
+ var result = native_.callSync('TZDate_getLocalTimezone', {});
if (native_.isFailure(result)) {
throw native_.getErrorObject(result);
}
REGISTER_SYNC("TimeUtil_unsetDateTimeChangeListener", TimeUtil_unsetDateTimeChangeListener);
REGISTER_SYNC("TimeUtil_setTimezoneChangeListener", TimeUtil_setTimezoneChangeListener);
REGISTER_SYNC("TimeUtil_unsetTimezoneChangeListener", TimeUtil_unsetTimezoneChangeListener);
- REGISTER_SYNC("TZDate_getTimezone", TZDate_getTimezone);
+ REGISTER_SYNC("TZDate_getLocalTimezone", TZDate_getLocalTimezone);
REGISTER_SYNC("TZDate_getTimezoneOffset", TZDate_GetTimezoneOffset);
REGISTER_SYNC("TZDate_toLocaleDateString", TZDate_toLocaleDateString);
REGISTER_SYNC("TZDate_toLocaleTimeString", TZDate_toLocaleTimeString);
ReportSuccess(out);
}
-void TimeInstance::TZDate_getTimezone(const picojson::value& /*args*/, picojson::object& out) {
+void TimeInstance::TZDate_getLocalTimezone(const picojson::value& /*args*/, picojson::object& out) {
LoggerD("Entered");
std::string local_timezone = TimeManager::GetDefaultTimezone();
void TimeUtil_unsetDateTimeChangeListener(const picojson::value& args, picojson::object& out);
void TimeUtil_setTimezoneChangeListener(const picojson::value& args, picojson::object& out);
void TimeUtil_unsetTimezoneChangeListener(const picojson::value& args, picojson::object& out);
- void TZDate_getTimezone(const picojson::value& args, picojson::object& out);
+ void TZDate_getLocalTimezone(const picojson::value& args, picojson::object& out);
void TZDate_GetTimezoneOffset(const picojson::value& args, picojson::object& out);
void ToStringTemplate(const picojson::value& args, bool use_locale_fmt,
TimeUtilTools::DateTimeFormatType type, picojson::object* out);
std::string TimeManager::GetDefaultTimezone() {
LoggerD("Entered");
- char buf[1024];
- std::string result;
- ssize_t len = readlink("/etc/localtime", buf, sizeof(buf)-1);
- if (len != -1) {
- buf[len] = '\0';
+
+ std::unique_ptr<TimeZone> tz(TimeZone::createDefault());
+
+ if (tz) {
+ UnicodeString us;
+ tz->getID(us);
+
+ std::string s;
+ us.toUTF8String(s);
+
+ SLoggerD("Default time zone: %s", s.c_str());
+
+ return s;
} else {
- /* handle error condition */
- return result;
+ LoggerE("Unable to obtain default time zone");
+ return "Unknown/Unknown";
}
- result = std::string(buf+strlen("/usr/share/zoneinfo/"));
-
- LoggerD("tzpath = %s", result.c_str());
- return result;
}
std::string TimeManager::GetCurrentTimezone(){