如何将字节数组(SQL 服务器时间戳)转换为日期时间 (C#)

本文关键字:转换 日期 时间 时间戳 SQL 字节 字节数 数组 服务器 | 更新日期: 2023-09-27 18:35:15

如何将字节数组转换为DateTime?我必须这样做,因为我使用带有属性Timestamp的属性(名为 CreationDataStamp作为实体框架。我用于将字节数组转换为DateTime的第二个属性(名为CreationDate)。

[System.ComponentModel.DataAnnotations.Timestamp]
public byte[] CreationDateStamp { get; set; }
[System.ComponentModel.DataAnnotations.Schema.NotMapped]
public DateTime CreationDate
{
    get
    {
        return Convert.ToDateTime(CreationDateStamp);
    }
}

问题是我在 9 行有这个例外:

无法将类型 System.Byte[] 的对象转换为类型 System.IConvertible


更新:

我也从这个问题中尝试过这个问题:如何在 C# 中将字节 [] 转换为日期时间?

long longVar = BitConverter.ToInt64(CreationDateStamp, 0);
DateTime dateTimeVar = new DateTime(1980,1,1).AddMilliseconds(longVar);

但我有这个例外:

要添加的值超出范围。
参数名称:值

你可以帮我吗?

如何将字节数组(SQL 服务器时间戳)转换为日期时间 (C#)

SQL 服务器Timestamp不是DateTime。它是元组(行)的版本控制列。

  • SQL 服务器参考 - 请参阅行版本和旧版本时间戳。
  • 实体框架参考 - 使用实体框架处理并发 6.

简而言之,你不能做你想做的事情。

尝试这样的事情:

long longVar = BitConverter.ToInt64(byteValue, 0);
DateTime dateTimeVar = new DateTime(1980,1,1).AddMilliseconds(longVar);

希望有帮助。