所以我试图从sqlite数据库转换纪元时间。我使用的时间列类型是Timeswap。
存储的值为:1383928265(11/8/2013 11:31:05 AM)http://www.epochconverter.com/
SQL:
var sql = "SELECT session_id, xml, strftime('%s',stopped), strftime('%s',time), orig_title FROM processed";
结果:119360752804800(10/13/1973 7:45:52 AM)
我的转换器:
public static DateTime FromUnixTime(long unixTime)
{
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
return epoch.AddSeconds(unixTime).ToLocalTime();
}
我对转换器进行了一些调整:
public static DateTime FromUnixTime(long unixTime)
{
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var s = unixTime / 86400;
return epoch.AddSeconds(s).ToLocalTime();
}
但它正在屈服:10/11/2013 6:34:37 AM
我无法从sqlite数据库中获取正确的日期。
编辑: 模式
答案 0 :(得分:1)
您使用的是strftime错误。
除非您使用unixepoch
修饰符,否则数字将被解释为儒略日期:
> SELECT strftime('%s', 1383928265), datetime(1383928265);
119360535336000 3784354-44914542-14 12:00:00
> SELECT strftime('%s', 1383928265, 'unixepoch'), datetime(1383928265, 'unixepoch');
1383928265 2013-11-08 16:31:05
但是,数据库中的值已经具有您想要的确切格式,因此您首先不需要使用strftime
:
SELECT session_id, xml, stopped, time, orig_title FROM processed