【问题标题】:Why do these two date formats differ?为什么这两种日期格式不同?
【发布时间】:2008-10-03 01:40:23
【问题描述】:

我试图在 WPF 文本块中只生成天数,没有前导零,也没有额外的空间填充(这会影响布局)。第一个生成带有空格的日期数,第二个生成整个日期。根据docs,'d' 应该产生日期 (1-31)。

string.Format("{0:d }", DateTime.Today);
string.Format("{0:d}", DateTime.Today);

更新:添加 % 确实是诀窍。适当的文档here

【问题讨论】:

    标签: c# .net datetime formatting


    【解决方案1】:

    here

    d, %d

    一个月中的哪一天。个位数的天数没有前导零。如果格式模式未与其他格式模式组合,则应用程序指定“%d”。

    否则d被解释为:

    d - 'ShortDatePattern'

    PS。对于搞乱格式字符串,使用LinqPad 是非常宝贵的。

    【讨论】:

    【解决方案2】:

    来自“自定义日期和时间格式字符串”的 MSDN 文档:

    任何不是标准日期的字符串 和时间格式字符串被解释 作为自定义日期和时间格式 字符串。

    {0:d} 被解释为标准数据和时间格式字符串。来自“标准日期和时间格式字符串”,“d”格式说明符:

    表示自定义日期和时间 当前定义的格式字符串 ShortDatePattern 属性。

    使用空格,{0:d } 不匹配任何标准日期和时间格式字符串,并被解释为自定义数据和时间格式字符串。来自“自定义日期和时间格式字符串”,“d”格式说明符:

    将月份中的某天表示为 从 1 到 31 的数字。

    【讨论】:

      【解决方案3】:

      {0:d} 格式使用Standard Date and Time Format Strings document of MSDN 中定义的模式。 'd' 转换为短日期模式,'D' 转换为长日期模式,依此类推。

      您想要的格式似乎是 Custom Date and Time Format Modifiers,当没有匹配的指定格式(例如,'d' 包括空格)或使用 ToString() 时,它可以工作。

      您可以改用以下代码:

      string.Format("{0}", DateTime.Today.ToString("d ", CultureInfo.InvariantCulture));
      

      【讨论】:

      • 还包括一个多余的空格。
      猜你喜欢
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多