程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> <<ABP框架>> 時間,abp框架時間

<<ABP框架>> 時間,abp框架時間

編輯:關於.NET

<<ABP框架>> 時間,abp框架時間


文檔目錄

 

本節內容:

  • 簡介
  • 時鐘
    • 客戶端
  • 時區
    • 客戶端
  • 綁定器與轉換器

 

簡介

雖然有些應用目標市場只是在一個時區,有些應用目標市場是許多不同時區,為滿足這種需求並集中化日期操作,ABP為日期操作提供公共基礎。

 

時鐘

Clock是與DateTime值合作的主要對象,它定義了以下靜態屬性/方法:

  • Now:通過當前供應器獲取當前時間。
  • Kind:獲取當前供應器的DateTimeKind。
  • SupportsMultipleTimezone:獲取一個值,指示當前供應器能否支持多時區應用。
  • Normalize:把給定的DateTime標准化/轉換成適合當前供應器。

所以,我們用抽象了Colok.Now的DateTime.Now代替DateTime.Now:

DateTime now = Clock.Now;

Clock內部使用了時鐘供應器。有三種內置的時鐘供應器:

  • ClockProviders.Unspecified(UnspecifiedClockProvider):默認的時鐘供應器,行為就像DateTime.Now。它使你完全不用Clock類。
  • ClockProviders.Utc(UtnClockProvideder):用UTC時間,Clock.Now為DateTime.UtcNow。Normalize(標准化)方法把給定的時間轉換成utc時間,並設它的Kind(種類)為DateTimeKind.Local。
  • ClockProviders.Local(LocalClockProvider):用計算機的本地時間,Normailize方法把給定的時間轉換成當地時間,並設置它的種類為DateTimeKind.UTC。它支持多時區。

你可設置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時區額外信息。這些信息可用用戶的時區轉換和顯示給用戶。

 

綁定器和轉換器

  • 在MVC、Web Api和Asp.new Core項目裡,ABP自動把接收到的日期按當前時鐘供應器標准化。
  • 當使用EntityFramework或NHibernate模塊時,ABP自動把接收自數據庫的日期按當前時鐘供應器標准化。

如果使用UTC時鐘供應器,所有的存儲在數據庫中的日期都認為是UTC值,和所有接收自客戶端的日期都認為是UTC,除了顯式指明。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved