【发布时间】:2009-08-18 14:24:00
【问题描述】:
这是我多次遇到的问题,我确信我缺少一个优雅的解决方案。
我在 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,还是没有效果?当然,我必须检查它是否没有搞砸其他任何事情,但它可以工作吗?
【问题讨论】:
-
对于程序员来说,这是最让人头疼的原因……
-
偶数日月年有时是一种痛苦。年月日时分秒最好:)