C# 将字节[]转换为日期时间会返回错误的年份

C# 将字节[]转换为日期时间会返回错误的年份,c#,datetime,bytearray,win-universal-app,C#,Datetime,Bytearray,Win Universal App,我的应用程序是用C#编写的UWP应用程序。 我需要从文件中打开一个流,将8个字节读入一个字节[],然后将字节数组转换为DateTime。 我正在使用以下代码: static public async Task<DateTime> GetDateTime(StorageFile FileName) { Stream inStream = await FileName.OpenStreamForReadAsync(); byte[] dt = ne

我的应用程序是用C#编写的UWP应用程序。 我需要从文件中打开一个流,将8个字节读入一个字节[],然后将字节数组转换为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;
    }
应转换为“30/03/2016 09:44:55”

如果我运行我的应用程序,上面的代码返回“30/03/041609:44:55”,相差1600年。
我的代码怎么了?

1600年可以通过使用
DateTime.FromFileTimeUtc
来修复

FromBinary
-此属性的值(刻度)表示自0001年1月1日午夜12:00:00(公历0001年1月1日0:00:00 UTC)以来经过的100纳秒间隔数

FromFileTimeUtc
-Windows文件时间是一个64位的值,表示自公元1601年1月1日午夜12:00(C.E.)协调世界时(UTC)以来经过的100纳秒间隔数


如您所见,1600年的差异。

您是如何序列化该文件的?我得到以下信息:System.ArgumentOutOfRangeException nonèstata gestita dal codice Utene HResult=-2146233086 Message=不是有效的Win32文件时间。参数名称:fileTime ParamName=fileTime Source=mscorlib StackTrace:at System.DateTime.FromFileTimeUtc(Int64 fileTime)位于CZIPGenius.czip4.d__10.MoveNext()---来自引发异常的上一个位置的堆栈结束跟踪---
C0 3B 12 D1 68 8A D1 01