我正在尝试 ormlite。我发现当我插入一个具有 DateTime 属性的对象时,它会被 ormlite 应用到 -8:00(我的时区是 +8)。它应该按字面意思插入时间。就我而言,它已经是UTC。
但是从 ormlite 中读取值,+8 并没有被重新应用。
这是一个已知的错误?
谢谢
我正在尝试 ormlite。我发现当我插入一个具有 DateTime 属性的对象时,它会被 ormlite 应用到 -8:00(我的时区是 +8)。它应该按字面意思插入时间。就我而言,它已经是UTC。
但是从 ormlite 中读取值,+8 并没有被重新应用。
这是一个已知的错误?
谢谢
所以你的问题看起来与这个拉取请求有关: https ://github.com/kojoru/ServiceStack.OrmLite/commit/d3f63ccd40f945b8dc03fd627ad49a895d4277de
如果您检查代码SqlServerOrmLiteDialectProvider.cs
,看起来设置SqlServerOrmLiteDialectProvider.EnsureUtc(true)
可以解决您的问题。
var dialect = new SqlServerOrmLiteDialectProvider();
dialect.EnsureUtc(true);
var factory = new OrmLiteConnectionFactory(cnnStr, dialect);
var connection = factory.Open();
检查EnsureUtcTest.cs
一个例子。老问题,我知道,但我希望这会有所帮助。
我认为它是以 UTC 类型插入的。从数据库中读取 DateTime 后尝试应用.ToLocalTime()