我的应用程序是一个用C#编写的UWP应用程序。 我需要从文件中打开一个流,将8个字节读入byte [],然后将字节数组转换为DateTime。 我使用以下代码:
static public async Task<DateTime> GetDateTime(StorageFile FileName)
{
Stream inStream = await FileName.OpenStreamForReadAsync();
byte[] dt = new byte[8];
await inStream.ReadAsync(dt, 0, 8);
long longDT = BitConverter.ToInt64(dt, 0);
DateTime resDT = DateTime.FromBinary(longDT);
return resDT;
}
要读取的字节是:
C0 3B 12 D1 68 8A D1 01
应转换为&#34; 30/03/2016 09:44:55&#34;。
如果我运行我的应用程序,上面的代码将返回&#34; 30/03 / 0416 09:44:55&#34;,相差1600年。 我的代码出了什么问题?
答案 0 :(得分:2)
可以使用DateTime.FromFileTimeUtc
修复1600年。
FromBinary
- 此属性的值(Ticks)表示自0001年1月1日午夜12:00:00(1月1日0:00:00)以来经过的100纳秒间隔的数量,0001,在阳历中),
FromFileTimeUtc
- Windows文件时间是一个64位值,表示自公元1601年1月1日午夜12:00(CE)协调世界时(UTC)以来经过的100纳秒间隔的数量)。
正如你所看到的,1600年的差异。