我正在将Delphi应用程序移植到C#,但遇到了问题。 Delphi应用程序将时间记录到日志文件中,然后将其读回到程序中。但是记录的时间格式让我感到困惑。我找不到任何.Net库来正确转换它。

Delphi在日志文件中记录的时间:976129709
(在Delphi代码中将其转换为1/14/2009 5:53:26 PM)

//Here is the Delphi code which records it:
IntToStr(DirInfo.Time);

//Here is the Delphi code which reads it back in:
DateTimeToStr(FileDateToDateTime(StrToInt(stringTime));


有人有什么想法我可以在.Net中阅读吗?

最佳答案

Delphi的TSearchRec.Time格式是旧的DOS 32位日期/时间值。据我所知,没有内置转换器,因此您必须编写一个。例如:

public static DateTime DosDateToDateTime(int DosDate)
{
     Int16 Hi = (Int16)((DosDate & 0xFFFF0000) >> 16);
     Int16 Lo = (Int16)(DosDate & 0x0000FFFF);

     return new DateTime(((Hi & 0x3F00) >> 9) + 1980, (Hi & 0xE0) >> 5, Hi & 0x1F,
        (Lo & 0xF800) >> 11, (Lo & 0x7E0) >> 5, (Lo & 0x1F) * 2);
}

07-28 03:27
查看更多