之所以说几乎没人注意是因为只有在修改了本地时间的短时间的格式后才会出现这个问题。
如图,我把短时间格式设置成这样了,这是背景。
=====================
一次写软件时发现从数据库读取了数据后,在转换字符串为时间格式时 总因为格式不对出错。
<pre name="code" class="csharp">string temple=dt.Rows[i]["time"];
Convert.ToDateTime(temple )
这是因为tostring()后 时间格式是按照本地系统的格式来格式化的,于是temple的值变为:星期 月 日 时分秒。这样的格式,convert是不支持这种格式的。想了好久的解决办法就是如下方法。(这里是提取后的简化代码,因为期间我必须要用字符串保存时间,所以才有了下面的折中代码)
<pre name="code" class="csharp"><pre name="code" class="csharp">string temple=Convert.ToDateTime( dt.Rows[i]["time"]).ToString("yyyy-MM-dd HH:mm:ss")
Convert.ToDateTime(temple)//这样就可以转换而不报错了,因为格式已经正确了