文檔目錄
本節內容:
簡介
雖然有些應用目標市場只是在一個時區,有些應用目標市場是許多不同時區,為滿足這種需求並集中化日期操作,ABP為日期操作提供公共基礎。
時鐘
Clock是與DateTime值合作的主要對象,它定義了以下靜態屬性/方法:
所以,我們用抽象了Colok.Now的DateTime.Now代替DateTime.Now:
DateTime now = Clock.Now;
Clock內部使用了時鐘供應器。有三種內置的時鐘供應器:
你可設置Clock.Provider,以便使用一個不同的時鐘供應器:
Clock.Provider = ClockProviders.Utc;
這是在應用程序開始前(在Web應用裡就是Application_Start)通常的做法。
客戶端
通過javascript的abp.clock對象在客戶端使用時鐘,當你在服務端設置Clock.Provider時,ABP會自動在客戶端設置abp.clock.provider的值。
時區
ABP定義了一個名為Abp.Timing.TimeZone設置(TimingSettingNames.TimeZone常量),來存儲被選的宿主時區。ABP假設時區設置的值是一個可用的Windows時區id。同樣定義了一個時區映射文件把一個Windows時區轉換成IANA(互聯網數字分配機構)時區,因為有些公共庫使用的是IANA時區id。為支持多時區必須使用UtcClockProvider。如果使用UtcClockProvider,所有的日期值將存儲為UTC,並用UTC的格式發送給客戶端,然後我們可以在客戶端通過用戶當前時區的設置把UTC日期轉換成用戶的時區。
客戶端
ABP創建一個Javascript對象,名為abp.timing.timeZoneInfo,為當前用戶包含時區信息。該信息包含Windows和IANA時區id和一些windows時區額外信息。這些信息可用用戶的時區轉換和顯示給用戶。
綁定器和轉換器
如果使用UTC時鐘供應器,所有的存儲在數據庫中的日期都認為是UTC值,和所有接收自客戶端的日期都認為是UTC,除了顯式指明。