關於格林尼治時間(GMT)和DateTime相互轉換的分享

  • 2020 年 3 月 12 日
  • 筆記

普及一下什麼是格林尼治時間?

世界時UT即格林尼治 平太陽時間,是指格林尼治所在地的標準時間,也是表示地球自轉速率的一種形式。以地球自轉為基礎的時間計量系統。地球自轉的角度可用地方子午線相對於地球上的基本參考點的運動來度量。為了測量地球自轉,人們在地球上選取了兩個基本參考點:春分點(見分至點)和平太陽點,由此確定的時間分別稱為恆星時和平太陽時。

林尼治是英國倫敦南郊原皇家格林尼治天文台所在地,地球本初子午線的標界處,世界計算時間和經度的起點。以其海事歷史、作為本初子午線的標準點、以及格林尼治時間以其命名而聞名於世。這裡地勢險要,風景秀麗,兼具歷史和地方風情,也是倫敦在泰晤士河的東方門戶。

不光是天文學家使用格林尼治時間,就是在新聞報刊上也經常出現這個名詞。我們知道各地都有各地的地方時間。如果對國際上某一重大事情,用地方時間來記錄,就會感到複雜不便.而且將來日子一長容易搞錯。因此,天文學家就提出一個大家都能接受且又方便的記錄方法,那就是以格林尼治的地方時間為標準。

關於格林尼治時間想知道再詳細的計算的話,請自行百度。

1、DateTime轉換成格林尼治時間(GMT),直接上代碼,廢話不多說。

        /// <summary>          /// 獲取格林治時間          /// </summary>          /// <param name="nowTime"></param>          /// <returns></returns>          public static long GetUnixTime(DateTime nowTime)          {              DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1, 0, 0, 0, 0));              return (long)Math.Round((nowTime - startTime).TotalMilliseconds / 1000, MidpointRounding.AwayFromZero);          }

2、格林尼治時間(GMT)轉換成DateTime

        /// <summary>          /// 獲取時間(由格林治時間)          /// </summary>          /// <param name="timeStamp"></param>          /// <returns></returns>          public static DateTime From_UnixTime(long timeStamp)          {              return DateTime.Parse("1970-01-01 00:00:00").AddSeconds(timeStamp);          }    

3、獲取格林治時間的四位元組數組

        /// <summary>          /// 獲取格林治時間的四位元組數組          /// </summary>          /// <param name="nowTime"></param>          /// <returns></returns>          public static byte[] GetByteTimeStamp(DateTime nowTime)          {              DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1, 0, 0, 0, 0));              long lng = (long)Math.Round((nowTime - startTime).TotalMilliseconds / 1000, MidpointRounding.AwayFromZero);              byte[] timestamp = System.BitConverter.GetBytes(lng);              byte[] ret = new byte[4];              ret[0] = timestamp[3];              ret[1] = timestamp[2];              ret[2] = timestamp[1];              ret[3] = timestamp[0];              return ret;          }

ok,今天的分享就到這裡,有不錯的歡迎留言提出!!!