【问题标题】: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 来自哪里?它是如何创建的?

标签: c# datetime cultureinfo


【解决方案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);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 2015-10-17
      • 1970-01-01
      • 2013-03-05
      • 1970-01-01
      • 2017-04-15
      相关资源
      最近更新 更多