[英]Unable to convert DateTime from SQL Server to C# DateTime
我在C#编写了一个使用日期的程序。 它从SQL Server表中获取值。 我使用的是Windows 7,程序运行正常。 我有这行代码:
DateTime fechaOperacion = Convert.ToDateTime(reader["FechaOperacion"]);
读者以24小时格式返回日期,我能够将其转换为DateTime
变量。
现在我对Windows 10进行了系统升级,同样的代码行引发了以下错误:
字符串未被识别为有效的DateTime。 从索引20开始有一个未知单词。
现在读者返回am / pm格式,而索引20则是am或pm
我试过以下的事情:
将代码行改为:
Convert.ToDateTime(reader["FechaOperacion"], System.Globalization.CultureInfo.InvariantCulture)
reader.GetDateTime(reader.GetOrdinal("FechaOperacion"));
将文化转换为24小时格式
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(1033);
但这些似乎都不起作用,我不知道还能做些什么。
最终,这里的根本问题是存储一个表示日期/时间的值作为文本数据(意思是某种[n][var]char({max|n})
,或者在push: [n]text
) 。 这有很多问题:
你应该有一个datetime
/ date
/ time
/等列。 然后将其存储为需要零解析的数字 (不是字符串),并且可以可靠地工作而不会出现任何转换问题。
注意: 可能是您正确存储它,但在查询的select
语句中格式化它。 在这种情况下,就是不要这样做 ; 返回日期时间raw,让接收客户端担心如何显示它。
根据您的实际格式,您可以定义合适的格式列表并执行如下所述的转换
string[] mfs = { "MM/dd/yyyy HH:mm:ss", "MM/dd/yyyy h:mm:ss tt"};
var dat = DateTime.ParseExact("04/23/1945 8:45:22 PM", mfs,
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.