这是我遇到的一个问题很多次,我确信有一个我缺少的优雅解决方案. 我在c#中有一些DateTime变量,我从各种SQL表/网站/ Web服务发送,通常以字符串形式发送.问题是这些来源中的一些被设置为
我在c#中有一些DateTime变量,我从各种SQL表/网站/ Web服务发送,通常以字符串形式发送.问题是这些来源中的一些被设置为英语(美国),一些被设置为英语(英国).我无法控制其中的一些,因为我非常希望将它们全部设置为一种文化或另一种文化.
到目前为止,我一直在使用CultureInfo对象转换它们,以正确格式化,如:
CultureInfo ci = new CultureInfo("en-GB"); Convert.ToDateTime(inputDateTimeString, ci);
然而,最近才发现转换不知道原始DateTime所处的文化(正如我所说,可能是美国或英国),因为它只是一个字符串.
对于日期字符串,例如“06/15/2009”,这很好,因为转换识别’15’不能是月份.但是,日期字符串“06/07/2009”将始终有效,但根据原件是美国还是英国,它可能指的是不同的日期和月份.
是否有一种更好的可接受的方法来处理DateTime,从而减少这些含糊之处?谢谢.
编辑:
是的,因此似乎没有可靠的方法可以始终转换为正确的格式,因为我的信息有限.
这些DateTime字符串的一个来源是.dll我无法控制.但是,我可以控制此.dll用于访问存储信息的数据库的SQL登录.如果我要将此登录的语言设置更改为英式英语(目前是美国英语),它会以该格式检索DateTime,还是会无效?我必须检查当前它没有搞砸任何其他东西,但它可能有效吗?
您需要从源头解决问题:您将以模糊格式获取数据.如果您无法自行更改数据源,则应使用格式字符串或类似内容来装饰它们,以便您知道以某种方式处理整个数据源.没有这些信息,您根本无法可靠地解析数据.