北京時區是東八區,領先UTC八個小時,在電子郵件信頭的Date域記為+0800。如果在電子郵件的信頭中有這么一行:
Date: Fri, 08 Nov 2002 09:42:22 +0800
說明信件的發送地的地方時間是二○○二年十一月八號,星期五,早上九點四十二分(二十二秒),這個地方的本地時領先UTC八個小時(+0800, 就是東八區時間)。電子郵件信頭的Date域使用二十四小時的時鐘,而不使用AM和PM來標記上下午。
以這個電子郵件的發送時間為例,如果要把這個時間轉化為UTC,可以使用一下公式:
UTC + 時區差 = 本地時間
時區差東為正,西為負。在此,把東八區時區差記為 +0800,
UTC + (+0800) = 本地(北京)時間 (1)
那么,UTC = 本地時間(北京時間))- 0800 (2)
0942 - 0800 = 0142
即UTC是當天凌晨一點四十二分二十二秒。如果結果是負數就意味著是UTC前一天,把這個負數加上2400就是UTC在前一天的時間。例如,本地 (北京)時間是 0432 (凌晨四點三十二分),那么,UTC就是 0432 - 0800 = -0368,負號意味著是前一天, -0368 + 2400 = 2032,既前一天的晚上八點三十二分。
紐約的時區是西五區,比UTC落后五個小時,記為 -0500:
UTC + (-0500) = 紐約時間 (3)
UTC = 紐約時間 + 0500 (4)
把(2)式 - (4)式相比較,
UTC = 北京時間 - 0800 = 紐約時間 + 0500 (5)
即 北京時間 = 紐約時間 + 1300 (6)
即北京時間領先紐約時間十三個小時,由(6)式,
紐約時間 = 北京時間 - 1300 (7)
在四月下旬,紐約又換用夏令時,又稱為日光節約時,比標準紐約時間提前一個小時,實際成為西四區的標準時間,成為 -0400。
UTC + (-0400) = 紐約夏令時,套用以上公式,
北京時間 = 紐約夏令時 + 1200
紐約夏令時 = 北京時間 - 1200
在這些轉換中,最重要的公式就是
UTC + 時區差 = 本地時間
時區差東為正,西為負。例如,東八區(北京)是 +0800,西五區(紐約)是-0500,加州是西八區,是-0800,美國中部時區是西六區,-0600,美國山地時區是西七區,-0700,太平洋時 區是西八區,-0800,在夏天使用夏時制,成為-0700。德國時區是東一區,+0100,夏天變為+0200。
多數電子郵件程序,例如Outlook Express,在顯示時間時,計算機程序把時間先轉換成為本地時間再顯示,例如,郵件的Date域為:
Date: Fri, 08 Nov 2002 09:42:22 +0800
Outlook Express在顯示時就顯示為:
Date: Thur, 07 Nov 2002 08:42:22 pm,把北京時間轉換成為了紐約時間,而且把二十四小時格式的時間轉換成為了十二小時的格式。當然,為了時間轉換正確,發送方和接受方的計算機的時區都要 設置正確,在這里,發送方的時區要正確地設為北京時區東八區,而我的時區要設為西五區。
為了方便起見,我在這里放上紐約,加洲以及北京實時顯示的時鐘,以省去計算的麻煩。
?
全球標準時間 (UTC)
全球標準時間指的是由世界時間標準設定的時間。原先也被稱為格林威治標準時間或者 GMT。
我們知道,本初子午線被定義從倫敦郊區的皇家格林尼治天文臺穿過,那里的時間被定義為全球的標準時間。
中國位于東八區,所以要比這個時間早八個小時,也就是說,全球標準時間是5日0點時,中國是5日的8點,而美國部分地區還處于4日的黃昏。
有些對象、函數中,需要使用 UTC 時間,我們就需要將中國的時間轉換成 UTC 時間,使用 toUTCString。
var d = new Date();
document.write("當前的 UTC 時間是:" + d.toUTCString());
toGMTString 與 toUTCString 功能、用法均相同,但我們推薦使用 toUTCString,畢竟 GMT 是以前的稱呼。
?
c#
?
DateTime 值
DateTime 類型的時間值描述通常使用協調世界時 (UTC) 標準來表達,它是格林尼治標準時間 (GMT) 的國際識別名。協調世界時是在經度零度(即 UTC 原點)測量到的時間。夏時制不適用于 UTC。
本 地時間是相對于特定時區而言。時區與時區偏移量關聯,它是時區從 UTC 原點算起的以小時為單位的偏移量。此外,本地時間有可能受夏時制影響,夏時制會對日長增加或減少一小時。因此,本地時間的計算是將時區偏移量加上 UTC,如有必要,再根據夏時制進行調整。UTC 原點的時區偏移量為零。
UTC 時間適合于計算、比較日期和時間,以及將日期和時間存儲在文件中。本地時間適合于在桌面應用程序的用戶界面中顯示。識別時區的應用程序(如許多 Web 應用程序)還需要使用許多其他時區。
如果 DateTime 對象的 Kind 屬性為 DateTimeKind..::.Unspecified,則其未指定表示的時間是本地時間、UTC 時間還是某個其他時區中的時間。
DateTime 運算
使用 DateTime 結構的計算(如 Add 或 Subtract)不會修改該結構的值。相反,計算會返回新的 DateTime 結構,其值為計算結果。
![]() |
---|
DateTime 對象的計算和比較僅當這些對象表示同一時區中的時間時才有意義。 |
時區之間(例如,UTC 和本地時間之間,或者一個時區中的時間和本地時間之間)的轉換運算會考慮本地時區的夏時制,但是算術和比較運算不考慮。
DateTime 結構本身不太支持從一個時區轉換至另一個時區。您可以使用 ToLocalTime 方法將 UTC 轉換為本地時間,也可以使用 ToUniversalTime 方法從本地時間轉換為 UTC。但是,整套的時區轉換方法是在 TimeZoneInfo 類中提供的。使用這些方法,可以將世界上任一時區中的時間轉換為 UTC 或者本地時間。
每個 DateTime 成員都隱式使用公歷執行其操作,例外是指定日歷的構造函數以及使用從 IFormatProvider 派生的參數(如 System.Globalization..::.DateTimeFormatInfo)的方法,該參數隱式指定日歷。
DateTime 類型中的成員所執行的運算會考慮閏年和月中天數等細節。
DateTime 與 TimeSpan
DateTime 值類型與 TimeSpan 值類型的差異在于 DateTime 表示時間上的一刻,而 TimeSpan 表示時間間隔。例如,這意味著將 DateTime 的一個實例與另一個實例相減可以獲得表示這兩個實例之間的時間間隔的TimeSpan 對象。或者,將一個正 TimeSpan 與當前 DateTime 相加可以獲得表示將來日期的 DateTime 值。
可以向 DateTime 對象增加或減少一個時間間隔。時間間隔可為負,也可為正,可以用刻度或秒等為單位表示,也可表示為 TimeSpan 對象。
實現的接口
此類型實現 IComparable、IComparable<(Of <(T>)>)、IEquatable<(Of <(T>)>)、IFormattable 和IConvertible 接口。使用 Convert 類進行轉換,而不是使用此類型的 IConvertible 顯式接口成員實現。

下面的代碼示例演示如何大致比較等效的 DateTime 值,將它們聲明為“相等”時接受很小的差異。


?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

來自:http://msdn.microsoft.com/zh-cn/library/system.datetime(VS.95).aspx