2013-03-23 84 views
0

我正在使用timezone-js:https://github.com/mde/timezone-js。我有我想要使用的預定義時區列表。所以我預先解析了那些時區的JSON數據。使用JSON文件初始化timezoneJS

但我應該如何使用這些數據?

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對象。

回答

2

首先,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