0

我正在使用 timezone-js:https ://github.com/mde/timezone-js 。我有一个我想要使用的预定义时区列表。所以我预先解析了这些时区的 JSON 数据。

但是我究竟应该如何使用这些数据呢?

var _tz = timezoneJS.timezone;
_tz.loadingScheme = _tz.loadingSchemes.MANUAL_LOAD;
_tz.loadZoneJSONData('/major_cities.json', true);

我可以读取数据,就像这里一样。但是我应该如何使用tz变量来初始化 timezoneJS?

我在想我应该先做这样的事情:

timezoneJS.timezone.loadZoneDataFromObject(_tz);

然后初始化它......然后初始化timezoneJS,但是如果我现在初始化,我会得到一个错误,它找不到默认时区:Uncaught Error: Error retrieving "null/northamerica" zoneinfo files,可能是因为我已经提供了json数据。

我想知道如何使用 json 文件,以便创建timezoneJS.Date对象。

4

1 回答 1

3

首先, tz_ 只是防止在后续行中写入 timezoneJS.timezone 的捷径。

现在,有两种选择。如果你在服务器上有你的文件major_cities.json并且你想初始化 timezoneJS 你只需要做你写的:

var _tz = timezoneJS.timezone;
_tz.loadingScheme = _tz.loadingSchemes.MANUAL_LOAD;
_tz.loadZoneJSONData('/major_cities.json', true);

一切就绪。第二个选项是您有一个包含来自该文件的数据的对象。在这种情况下,您应该使用loadZoneDataFromObject而不是loadZoneJSONData,即:

var _tz = timezoneJS.timezone;
_tz.loadingScheme = _tz.loadingSchemes.MANUAL_LOAD;
_tz.loadZoneDataFromObject(majorCitiesObject);

之后,您不应该尝试调用 init 函数,因此 timezoneJS 已经由 loadZoneJSONData 初始化。如果要创建日期,只需调用 new timezoneJS.Date()。以下几行应该给你一个提示:

var timezoneName = 'Europe/London';
var newDate = new timezoneJS.Date(timezoneName);
console.log(newDate.toString());
console.log(newDate.toISOString());

结果应该是这样的:

2013-04-08 11:56:33
2013-04-08T10:56:33.019Z
于 2013-04-08T11:01:24.207 回答