Skip to content

MessagePack

DateTime 序列化问题

MessagePack 在序列化 DateTime 类型时,会按照TimeStamp类型进行处理,因此会将时间转换为UTC时间,并丢失 DateTime 中的 Kind 时区信息。

文档中提到,可以使用 NativeDateTimeResolver 来处理这个属性,此属性使用 .NET 默认的 Int64 方式表示时间,可以保留时区信息。

例:

[MessagePackFormatter(typeof(MessagePack.Formatters.NativeDateTimeFormatter))]
public DateTime FinishTime { get; set; }

Ref: