正在将字节转换为DateTime,导致错误C#

正在将字节转换为DateTime,导致错误C#,c#,datetime,byte,C#,Datetime,Byte,当尝试执行以下强制转换时 DateTime issueDate = Convert.ToDateTime(binfile.ReadByte()); (顺便说一下,读取.dat文件)我得到一个运行时错误,说“从字节到日期时间的转换无效” 我不知道为什么会出现这个错误,也不知道如何修复它 当我对字符串使用相同的方法时,效果很好 string firstName = Convert.ToString(binfile.ReadByte()); 感谢您的帮助。binfile.ReadByte()类型为

当尝试执行以下强制转换时

DateTime issueDate = Convert.ToDateTime(binfile.ReadByte());
(顺便说一下,读取.dat文件)我得到一个运行时错误,说“从字节到日期时间的转换无效”

我不知道为什么会出现这个错误,也不知道如何修复它

当我对字符串使用相同的方法时,效果很好

string firstName = Convert.ToString(binfile.ReadByte());

感谢您的帮助。

binfile.ReadByte()类型为Int32的无符号字节。如果您试图将其转换为
DateTime
,肯定会失败。您应该读取一个完整的字符串,然后键入并将其转换为
DateTime

,这并不奇怪。Net框架应该如何将一个字节强制转换为DateTime

转换为字符串是有效的:一个字节可以表示为字符串,就像框架中几乎每个类/结构一样

但是一个字节就是一个字节。这不是约会时间


如果我猜对了,您应该做的是,将文件中包含的文本“作为文本”读取,隔离表示有效日期时间字符串的部分,然后将其转换。这应该行。

可能是因为您只从流中读取了一个字节,而sizeof(DateTime)是8个字节。Convert.ToString(binfile.ReadByte())的值是多少?它的价值正确吗?

您希望它如何工作?一个字节有256个可能的值;如果没有更多信息,就没有有意义的转换:您希望将哪一组256或更少的日期时间值与0到255之间的整数相关联


如果您有这个问题的答案,您可以自己轻松地实现转换。

您无法将字节转换为日期时间。如果dt值存储为记号,则代码应为

DateTime issueDate = new DateTime(binfile.ReadInt64());

可以使用位转换器转换int64(即long),然后使用datetime.FromBinary从long获取datetime

            long utcMD = BitConverter.ToInt64(xBankPacketStructureParser.baMessageDate, 0);
            xBankPacket.xMessageDateTime = DateTime.FromBinary(utcMD);

几点了?我不知道。也许吧?一个字节只能容纳8位,即256个不同的值。您认为如何从中获取
DateTime
?您想读取哪种数据?“.dat”什么也没说。它是二进制格式吗?不能将字符串转换为日期时间。您可以解析该字符串并获得一个DateTime值作为结果