DateTimeOffset.FromUnixTimeMilliseconds vs sqlite strftime



我的 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();

最新更新