程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 日期型數據轉換成C#長整型數據

日期型數據轉換成C#長整型數據

編輯:關於C語言

C#語言還是比較常見的東西,這裡我們主要介紹日期型數據轉換成C#長整型數據,包 括介紹DateTime 的構造函數等方面。

為什麼要將日期型數據轉換成C#長整型數據呢?原因很多,但就我個人來說,經常將 它用於數據庫的日期存儲。由於各種數據庫對日期型的定義和處理是不一樣的,各種語言 對日期型數據的定義的處理也各不相同,因為,我寧願將日期型數據轉換成長整型數據再 保存到數據庫中。雖然也可以使用字符串來保存,但使用字符串也會涉及到許多問題,如 區域等問題,而且,它需要比保存C#長整型數據更多的空間。

日期型數據,在 C# 中的參與運算的時候,應該也是轉換為長整型數據來運算的。它 的長整型值是自 0001 年 1 月 1 日午夜 12:00 以來所經過時間以 100 毫微秒為間隔表 示時的數字。這個數在 C# 的 DateTime 中被稱為 Ticks(刻度)。DateTime 類型有一個 名為 Ticks 的長整型只讀屬性,就保存著這個值。如此,要從一個 DataTime 型數據得 到 long 型值就非常簡單了,只需要讀出 DataTime 對象的 Ticks 值即可,如:

long longDate = DateTime.Now.Ticks; 

DateTime 的構造函數中也提供了相應的,從長整型數據構造 DateTime 型數據的函數 :DateTime(long)。如:

DateTime theDate = new DateTime(longDate);

但這樣對於很多 VB6 程序員來說,是給他們出了一道難題,因為 VB6 中的日期型數 據內部是以 Double 型表示的,將其轉換為長整型後得到的僅僅是日期,而沒有時間。如 何協調這兩種日期類型呢?

System.DateTime 提供了 double ToOADate() 和 static DateTime FromOADate (double) 兩個函數來解決這個問題。前者將當前對象按原來的 double 值輸出,後者則 從一個 double 值獲得一個 System.DateTime 對象。舉例如下:

private void TestDateTimeLong() {
double doubleDate = DateTime.Now.ToOADate();
DateTime theDate = DateTime.FromOADate(doubleDate);
this.textBox1.Text = "";
this.textBox1.AppendText("Double value of now: " +  doubleDate.ToString() + "\n");
this.textBox1.AppendText("DateTime from double value: " +  theDate.ToString() + "\n");
}

運行結果:

Double value of now: 37494.661541713
DateTime from double value: 2002-8-26 15:52:37

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