DateTime.ToString(格式)在不同电脑上的意外行为
本文关键字:电脑 意外 ToString 格式 DateTime | 更新日期: 2023-09-27 18:06:16
那里。我正在开发一个从SQLServer获取数据的简单接口,并使用函数DateTime.ToString(String)
实际代码是CCD_ 2,其中DP是DateTimePicker控件。
当我在自己的笔记本电脑上测试时,一切都很好。但是当我在另一台电脑上移动编译后的代码时,结果就不一样了。例如:它从2013-03-27 22:02
传递到2013-03-27 22.02
,替换"在小时内使用":"。但这足以使我的应用程序崩溃,因为SQLServer生成的日期无效。
罪魁祸首可能是什么?两台电脑都安装了SQLServer2008R2(和相同的排序规则(和.NETFramework4.0客户端配置文件。我看到的一个区别是,我的SQLServer具有英语(美国(语言属性,而另一个则设置了意大利语,但我本应该用字符串格式来克服它。。。
您没有指定区域性,因此正在使用当前区域性。在另一个系统上,"."用于时间说明符,而不是":"。
但是,为了避免这种情况,您可以显式指定区域性:
var str = DP.Value.ToString("yyyy-MM-dd HH:mm:00", CultureInfo.InvariantCulture);
也就是说,使用参数化查询并将值保持为DateTime
比将日期作为字符串传递要好。
罪魁祸首可能是什么?
用户的区域性设置。
有些培养基使用.
,有些使用:
作为时间分隔符。
解决方案?
使用CultureInfo.InvariantCulture
(或选定的CultureInfo
(确保一致性:
DP.Value.ToString("yyyy-MM-dd HH:mm:00", CultureInfo.InvariantCulture)