2014-08-27 61 views

回答

0

我發現學習閉包庫的最好方法之一就是查看庫本身的 單元測試。如果您尚未這樣做,請克隆「https://github.com/google/closure-library/」。然後你可以看:「https://github.com/google/closure-library/blob/master/closure/goog/i18n/timezone_test.js」。在測試類中查找與您的用例相匹配的任何 單元測試方法。例如,簡單的時區:

function testSimpleTimeZoneZero() { 
    var date = new Date(); 
    var simpleTimeZone = goog.i18n.TimeZone.createTimeZone(0); 
    assertEquals(0, simpleTimeZone.getOffset(date)); 
    assertEquals('GMT+00:00', simpleTimeZone.getGMTString(date)); 
    assertEquals('Etc/GMT', simpleTimeZone.getTimeZoneId()); 
    assertEquals('UTC', simpleTimeZone.getLongName(date)); 
    assertEquals('UTC', simpleTimeZone.getShortName(date)); 
    assertEquals('+0000', simpleTimeZone.getRFCTimeZoneString(date)); 
    assertEquals(false, simpleTimeZone.isDaylightTime(date)); 

}

的時區類的其他方面,你必須知道的是,它需要操作的「數據」。 從文檔「https://google.github.io/closure-library/api/goog.i18n.TimeZone.html」:

i18n.TimeZone擴展 TimeZone類實現客戶端應用程序的時區的分辨率和名字信息源。時區對象從時區信息對象開始。應用程序可以靜態啓動時區,也可以選擇從服務器獲取的數據啓動。每個時區的信息數組很小,但整個數據集對於客戶端應用程序來說太多了。如果允許最終用戶更改時區設置,則應使用動態檢索。如果只有時區偏移是已知的,那麼只有使用時區偏移才能創建TimeZone對象的體面回退。整套時區信息陣列可在http://go/js_locale_data下獲得。它基於CLDR/ICU和Olson時區數據庫生成,並會及時更新。

單元測試顯示一種機制來靜態「加載」這個數據(在文件的頂部)。

相關問題