private static DateTime DosTimeToDateTime(uint dateTime)
{
int dateTimeSigned = (int)dateTime;
int year = 1980 + (dateTimeSigned >> 25);
int month = (dateTimeSigned >> 21) & 0xF;
int day = (dateTimeSigned >> 16) & 0x1F;
int hour = (dateTimeSigned >> 11) & 0x1F;
int minute = (dateTimeSigned >> 5) & 0x3F;
int second = (dateTimeSigned & 0x001F) * 2; // only 5 bits for second, so we only have a granularity of 2 sec.
if (second >= 60)
{
second = 0;
}
DateTime ret = new DateTime();
try
{
ret = new System.DateTime(year, month, day, hour, minute, second, 0);
}
catch
{
}
return ret;
}