access_time 13 years ago language中文
more_vert

SQlite 数据库遇到的问题 “该字符串未被识别为有效的 DateTime”

visibility 975 comment 0

找了很久都没有找到合理的解释,幸好找到一篇文章,解答了这个问题,特收藏于此,以备参考。

http://www.xueit.com/html/2009-02/21_644_00.html

最近使用ASP.NET+SQLite数据库开发一个网站程序,结果在日期处理上出现了很头痛的问题,看下图

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.FormatException: 该字符串未被识别为有效的 DateTime。

解决方案:

在日期保存到Sqlite数据库时转换一个类型,比如:string _now = System.DateTime.Now.ToString("s");

也就是说在.ToString()方法中加一个s,即可解决日期读取错误的问题。

简单代码示例:

string _indate = Request["indate"]; //输入的日期如:2009-2-21
DateTime _inTime = Convert.ToDateTime(_indate);

//如下是保存数据SQL语句

insert into 表(indate) values(‘“ + _inTime.ToString("s") + "');   //这里转换

之后日期保存在Sqlite数据库的内容为:

奇怪为什么日期成为:1899-12-30了,放心这是正常,看下面我读取日期出来的内容是什么?如下:

看,是正确的日期。

因为iso 8601的描述:(http://msdn.microsoft.com/zh-cn/library/ms187819.aspx)

给出了字符串示例:
* 2004-05-23T14:25:10
* 2004-05-23T14:25:10.487

所以Sqlite保存的日期要转为iso 8601标准字符串格式

使用 日期.ToString("s");这种方法转换成 iso 8601标准字符串格式了。



info Last modified by Raymond 7 years ago copyright This page is subject to Site terms.
Like this article?
Share on

Please log in or register to comment.

account_circle Log in person_add Register

Log in with external accounts

Follow Kontext

Get our latest updates on LinkedIn.

Want to contribute on Kontext to help others?

Learn more

More from Kontext

visibility 388
thumb_up 0
access_time 8 years ago
visibility 1347
thumb_up 0
access_time 8 years ago
visibility 433
thumb_up 0
access_time 8 years ago