我正在将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);
}