【发布时间】:2013-01-10 04:13:19
【问题描述】:
我正在尝试 ormlite。我发现当我插入一个具有 DateTime 属性的对象时,它会被 ormlite 应用到 -8:00(我的时区是 +8)。它应该按字面意思插入时间。就我而言,它已经是 UTC。
但是从 ormlite 中读取值,+8 并没有被重新应用。
这是一个已知的错误吗?
谢谢
【问题讨论】:
-
ormlite 3.9.32 sqlite 32bit
我正在尝试 ormlite。我发现当我插入一个具有 DateTime 属性的对象时,它会被 ormlite 应用到 -8:00(我的时区是 +8)。它应该按字面意思插入时间。就我而言,它已经是 UTC。
但是从 ormlite 中读取值,+8 并没有被重新应用。
这是一个已知的错误吗?
谢谢
【问题讨论】:
我认为它是以 UTC 类型插入的。从数据库中读取 DateTime 后,尝试应用 .ToLocalTime()
【讨论】:
所以您的问题看起来与此拉取请求有关: 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 以获取示例。老问题,我知道,但我希望这会有所帮助。
【讨论】: