我正在读一个sqlite文件,其中datetime列数据保存为整数值(INTEGER NO NULL)
DateTime dt=reader.GetDateTime(nColDateTime);
但是它会发出一个错误,指出返回值的格式不正确。 我尝试在Datetime类中的所有其他可用方法,只找到
DateTime dt=DateTime.FromBinary(reader.GetInt64(nColDateTime));
有效(与其他人一样返回例外情况)。 但格式化的日期(如dt.ToShortDateTime())不正确(即0042/11/20)我不知道这是什么。 然后我试试这个
long d=DateTime.Now.Ticks-reader.GetInt64(nColDateTime);
DateTime dt=new DateTime(d);
它给了我1970/05/18
你能帮助我获得正确的约会时间吗?
答案 0 :(得分:1)
您的日期以Unix纪元格式存储。
您可能只想使用:
private static readonly DateTime epoch = new DateTime(1970, 1, 1);
...
var myDate = epoch + TimeSpan.FromTicks(reader.GetInt64(nColDateTime));
例如,当我查看上面“1970/05/18”的示例时,我可以假设您的约会时间约为5个月,比今天提前18天。
以下是我将如何重新审视原始值:
(DateTime.Today - new DateTime(1970, 5, 18)).Ticks
返回:
13119840000000000
将其插入我的公式:
new DateTime(1970, 1, 1) + TimeSpan.FromTicks(13119840000000000)
返回:
2011/07/30