我的网站有两种语言版本(英语和俄语)。
我尝试将字符串转换为日期时间,因此我使用了此代码
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
。我不明白为什么会这样。
有人有解决方案吗?或者任何人都面临这个问题?
答案 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,这对于复杂的日期和时间方案非常有用。