日期时间和文化信息
Posted
技术标签:
【中文标题】日期时间和文化信息【英文标题】:DateTime and CultureInfo 【发布时间】:2012-11-27 16:13:36 【问题描述】:我的代码中有这个:
var date1 = DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
当我目前的文化是荷兰语 (nl-NL
) 而不是 5 月 1 日时,我会得到 1 月 5 日。
我认为错误在第二个参数dd.MM.yyyy HH:mm:ss
。
有没有办法使用CultureInfo
类来解决这个问题?
【问题讨论】:
是的,不要使用 ParseExact 而是使用 Parse !!!使用 ParseExact 您要求对日期部分进行特定排序,给定的文化仅用于字符串和分隔符。date
来自哪里?它是如何创建的?
【参考方案1】:
InvariantCulture
与en-US
相似,所以我会改用正确的CultureInfo
:
var dutchCulture = CultureInfo.CreateSpecificCulture("nl-NL");
var date1 = DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss", dutchCulture);
Demo
当文化是我们的时候呢?我需要编码吗 每一种语言都有吗?
如果您想知道如何在“en-us”等其他文化中显示日期,可以使用date1.ToString(CultureInfo.CreateSpecificCulture("en-US"))
。
【讨论】:
当文化是我们的时候呢?我需要为现有的每一种语言编写代码吗? @Srcee:你什么意思?如果格式字符串是“dd.MM.yyyy”,则永远不会是文化 en-us。如果您的意思是如何在另一种文化中显示日期,那么这是另一个问题。你可以使用date1.ToString(CultureInfo.CreateSpecificCulture("en-US"))
。【参考方案2】:
使用CultureInfo
类更改您的文化信息。
var dutchCultureInfo = CultureInfo.CreateSpecificCulture("nl-NL");
var date1 = DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss", dutchCultureInfo);
【讨论】:
【参考方案3】:您可以尝试以下方法:
System.Globalization.CultureInfo cultureinfo =
new System.Globalization.CultureInfo("nl-NL");
DateTime dt = DateTime.Parse(date, cultureinfo);
【讨论】:
当文化是我们的时候呢?我需要为现有的每一种语言编写代码吗?【参考方案4】:试试吧..它会工作的
字符串文本="15/03/2021";
DateTime.ParseExact(text, "dd/M/yyyy", CultureInfo.InvariantCulture);
【讨论】:
以上是关于日期时间和文化信息的主要内容,如果未能解决你的问题,请参考以下文章
文化变体 DaylightName 和 StandardName(日期时间格式)