我的 Sqlite 数据库有一个类型为"INTEGER"的"时间"字段
我从C++Windows服务中将Unix时间(epoch(写入它,如下所示:
insert into ServicesData (Time, ...) values (((strftime('%s', 'now') - strftime('%S', 'now') + strftime('%f', 'now')) * 1000), ...);
(请参阅 https://stackoverflow.com/a/20478329/460084"获取自 Unix 纪元 (%s( 以来的秒数,减去当前时间的秒数 (%S(,将带有小数位的秒数 (%f( 相加,然后将结果乘以 1000 以从秒转换为毫秒"(
然后,我从 .NET Core 3.1 控制台应用程序中读取日期,如下所示:
public class ServicesData {
[Key]
public long Time { get; set; }
...
public string ToString() {
string res="";
var time = DateTimeOffset.FromUnixTimeMilliseconds(Time).DateTime;
res+= time.ToString("dd/MM/yy HH:mm:ss") + " ";
... return res;
}
}
我现在从我的 .NET 应用程序对同一个框进行查询,并验证ServicesData.Time
的整数值是否与使用 SQL ite 数据库浏览器的数据库上的整数值相同
但是,在调用ToString()
时,结果显示的日期是条目写入数据库的时间的一小时FW!
为什么日期不匹配?
(注意我尝试用FromUnixTimeMilliseconds(Time).UtcDateTime;
替换FromUnixTimeMilliseconds(Time).DateTime
,但得到了相同的结果(
我不确定为什么上面的FromUnixTimeMilliseconds
不起作用,但这可以正常工作:
var time = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)
.AddMilliseconds(Time)
.ToLocalTime();