日期时间和文化信息

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】:

InvariantCultureen-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);

【讨论】:

以上是关于日期时间和文化信息的主要内容,如果未能解决你的问题,请参考以下文章

Javascript中的文化特定日期时间

文化变体 DaylightName 和 StandardName(日期时间格式)

按国家/文化列出的常见日期(和时间)格式列表

根据文化将日期和时间正则表达式设置为 RegularExpressionValidator [关闭]

需要一些关于日期和文化的建议

实体框架中的日期时间文化问题