【问题标题】:DateTime ToString(“dd/MM/yyyy”) returns dd.MM.yyyyDateTime ToString(“dd/MM/yyyy”) 返回 dd.MM.yyyy
【发布时间】:2013-02-22 18:30:04
【问题描述】:

我也尝试过屏蔽格式化字符串中的“/”符号,但效果不佳。我的最终目标是获取以“/”符号作为分隔符的日期。我想我可以使用DateTime.ToString(“dd/MM/yyyy”).Replace('.', '/'),但感觉有点过分了。

【问题讨论】:

    标签: c# asp.net datetime


    【解决方案1】:

    日期/时间格式字符串中的/ 字符代表“格式提供程序的日期分隔符是什么”。由于您没有提供格式提供程序 Thread.CurrentCulture 被使用,并且在您的情况下,当前文化使用 . 作为日期分隔符。

    如果您想使用 文字 斜线,请将其放在单引号内:

    dateTime.ToString("dd'/'MM'/'yyyy");
    

    或者,您可以指定日期分隔符为 / 的格式提供程序:

    dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
    

    以上都是documented on MSDN

    See the difference in a live example.

    【讨论】:

    • 这是唯一真正回答问题的为什么部分的答案(即说“/”是特定于文化的分隔符)+1
    【解决方案2】:
    string s = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
    

    【讨论】:

      【解决方案3】:

      这是因为ToString works by default的方式,按照现在的文化:

      此方法使用来自当前的格式信息 文化。

      所以,覆盖它:

      string date = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
      

      【讨论】:

        【解决方案4】:

        这行得通(注意InvariantCulture):

        DateTime.Now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)
        

        如果未指定 CultureInfo,则将使用 CurrentCulture。如果这是一种不使用斜杠作为日期分隔符的区域性,则将其替换为实际区域性日期分隔符。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-08
          • 2014-04-30
          • 1970-01-01
          • 2020-02-24
          相关资源
          最近更新 更多