DateTimeOffset:从 LiteDb 集合中获取数据时,TZ 偏移量重置为 +00:00

Pra*_*ase 4 c# asp.net-mvc asp.net-core litedb

插入时,偏移量正常,但是检索文档时,它会重置为 +00:00

财产:

public DateTimeOffset CreatedOn { get; set; }
Run Code Online (Sandbox Code Playgroud)

插入:

user.CreatedOn = DateTimeOffset.Now; // 01/20/2021 6:05:21 PM +05:30
col.Insert(user);
col.EnsureIndex(x => x.Username);
Run Code Online (Sandbox Code Playgroud)

寻找:

using (var db = _liteDbConnection.Create() as LiteDatabase)
{
   var col = db.GetCollection<AuthUser>(USERS_COLLECTION);
   return col.FindOne(x => x.UserId == userId);
}
Run Code Online (Sandbox Code Playgroud)

user.CreatedOn变成

01/20/2021 6:05:21 PM +00:00

难道我做错了什么?

Jon*_*eet 6

文档中

遵循 BSON 规范,DateTime值最多只能存储毫秒级。所有DateTime值在存储时都会转换为 UTC,并在检索时转换回本地时间。

看起来并没有真正的DateTimeOffset支持。(我个人认为在检索时转换为本地时间是一个糟糕的主意,但这是一个稍微不同的问题。)此外,考虑到错误的偏移量 0,它看起来并没有真正正确地转换为本地时间。

我建议避免DateTimeOffset与 LiteDb 一起使用,直到它真正受到支持(保持偏移量)。