如果更改站点语言,则更改转换的日期时间格式

时间:2015-12-23 09:36:52

标签: c# datetime

我的网站有两种语言版本(英语和俄语)。

我尝试将字符串转换为日期时间,因此我使用了此代码

Button

所以问题发生就是我将用例子解释。我的日期是2015年12月30日&选择的语言是Eng。 &安培;转换string dts = form["startdatetime"]; string ets = form["enddatetime"]; DateTime? dt = string.IsNullOrEmpty(dts) ? (DateTime?)null : DateTime.Parse(dts, System.Globalization.CultureInfo.InvariantCulture); DateTime? et = string.IsNullOrEmpty(ets) ? (DateTime?)null : DateTime.Parse(ets, System.Globalization.CultureInfo.InvariantCulture); 。现在问题发生在我将语言英语改为俄语时,它将在相同的给定日期之间转换为DateTime? Dt value is 30/12/2015 10:00:00。我不明白为什么会这样。

有人有解决方案吗?或者任何人都面临这个问题?

3 个答案:

答案 0 :(得分:3)

这些与相同。 当您尝试获取字符串表示时,唯一的区别是它们的文本表示。

英国文化(我认为en-US )使用/作为DateSeparator但俄罗斯文化(我假设ru-RU )使用.

例如,如果您在代码中未提供任何.ToString()的情况下获得IFormatProvider的字符串表示形式,则此方法将使用您的CurrentCulture设置,此日期分隔符将为{{1或/取决于你设置英语或俄语文化。

但是,由于您甚至没有显示 如何获得这些字符串表示形式,我们无法帮助您。

答案 1 :(得分:2)

DateTime转换为字符串的方式取决于系统Culture。您似乎不仅要改变语言,还要改变文化,俄语和英语在编写DateTime方面有所不同。

一种解决方案可能是确保DateTime使用CultureInfo.InvariantCulture转换为字符串。

DateTimeObj.ToString(CultureInfo.InvariantCulture)

答案 2 :(得分:0)

如果您希望跨时区可靠地处理日期,请使用通用时间,请参阅DateTime.ToUniversalTime

如果要将跨文化格式控制为特定格式,请使用custom date and time formatter。您可以为此创建扩展方法,但通常特定区域的人希望以熟悉的格式查看日期,因此日期格式是特定于文化的原因。

在.Net Rocks上收听Matt Johnson,了解this show

上日期的精彩概述

另请查看Noda Date/Time API,这对于复杂的日期和时间方案非常有用。