2009-09-03 42 views
1

我得到了一個二進制文件,並且其中一個記錄字段存儲了一些日期信息。如何將VC++的DATE類型轉換爲C#的DateTime?

該保存節目由VC++編寫並使用DATE類型。

如何將它讀入C#的DateTime類型?


順便說一句:我試過DateTime.FromBinary,但它看起來不對。

回答

0

如果它是一個OLE日期,使用從here提供的信息:

DATE類型是使用 8字節浮點數來實現。天數爲 ,以整數增量 表示,以1899年12月30日開始,午夜爲 時間爲零。時間值爲 ,以小數部分表示。時間 精度爲1秒。這種類型是 也用於表示日期僅(在 小數部分是0)或時間僅 (整數部分是0)的值。

利用這一點,你可以轉換爲CLR的DateTime。

2

正如維奈的回答指出,在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的建議。

如此美麗,你能學到新的東西。

+0

謝謝,夥計們。我喜歡這裏。 – wupher 2009-09-03 17:02:20

相關問題