我得到了一個二進制文件,並且其中一個記錄字段存儲了一些日期信息。如何將VC++的DATE類型轉換爲C#的DateTime?
該保存節目由VC++編寫並使用DATE類型。
如何將它讀入C#的DateTime類型?
順便說一句:我試過DateTime.FromBinary,但它看起來不對。
我得到了一個二進制文件,並且其中一個記錄字段存儲了一些日期信息。如何將VC++的DATE類型轉換爲C#的DateTime?
該保存節目由VC++編寫並使用DATE類型。
如何將它讀入C#的DateTime類型?
順便說一句:我試過DateTime.FromBinary,但它看起來不對。
如果它是一個OLE日期,使用從here提供的信息:
DATE類型是使用 8字節浮點數來實現。天數爲 ,以整數增量 表示,以1899年12月30日開始,午夜爲 時間爲零。時間值爲 ,以小數部分表示。時間 精度爲1秒。這種類型是 也用於表示日期僅(在 小數部分是0)或時間僅 (整數部分是0)的值。
利用這一點,你可以轉換爲CLR的DateTime。
正如維奈的回答指出,在VC++日期確實是一個雙。只需讀取一個double,然後根據描述進行轉換。
這裏是轉換一些示例代碼:
double CDate = 8.50; //The DATE from C++
DateTime newDate = new DateTime(1899, 12, 30); //Start at 12/30/1899
int days = (int)Math.Floor(CDate); //Get the days (integer part)
double hours = (CDate-days) * 24; //Get the hours (fraction part)
newDate = newDate.AddDays(days).AddHours(hours);
EDIT 或者使用DateTime.FromOADate由Joe的建議。
如此美麗,你能學到新的東西。
謝謝,夥計們。我喜歡這裏。 – wupher 2009-09-03 17:02:20