【问题标题】:Adding "de" to es-ES CultureInfo DateTime C#将“de”添加到 es-ES CultureInfo DateTime C#
【发布时间】:2015-06-01 14:07:16
【问题描述】:

可能是愚蠢的问题,但我以前没有与 Culture 合作过。该日期的资产需要是:

MMMM dd "de" yyyy(“de”上不带引号)。

2015 年 1 月 1 日

我现在拥有的:

CultureInfo ci = new CultureInfo("es-ES", false);
string date = DateTime.Now.ToString("MMMM dd REPLACE yyyy", ci).Replace("REPLACE", "de");

我想知道是否有一种我不知道的“在编程上更正确”的方法,而不是string.Replace

【问题讨论】:

标签: c# datetime cultureinfo


【解决方案1】:

只需用单引号、双引号引用文字部分,或用反斜杠转义每个字符:

string date = DateTime.Now.ToString("MMMM dd 'de' yyyy", ci);
string date = DateTime.Now.ToString("MMMM dd \"de\" yyyy", ci);
string date = DateTime.Now.ToString(@"MMMM dd \d\e yyyy", ci);

请注意,在第二个选项中,我们需要在字符串文字中转义",在第三个选项中,我使用逐字字符串文字来避免转义反斜杠。使用单引号是最简单的:)

阅读custom date and time format strings,了解有关您可以做什么的更多详细信息。

【讨论】:

  • 不知道你能做到这一点 - 欣赏它。
【解决方案2】:

你可以用反斜杠转义字符:

string date = DateTime.Now.ToString(@"MMMM dd \d\e yyyy", ci)

请参阅documentation

注意@,它可以防止反斜杠被解析为字符串文字转义。

【讨论】:

    【解决方案3】:

    如果我理解清楚,您可以使用单引号来转义您的 de 部分;

    string date = DateTime.Now.ToString("MMMM dd 'de' yyyy", ci);
    

    或双引号;

    string date = DateTime.Now.ToString("MMMM dd \"de\" yyyy", ci);
    

    或使用转义字符作为verbatim string literal

    string date = DateTime.Now.ToString(@"MMMM dd \d\e yyyy", ci);
    

    我几乎更喜欢使用单引号,因为 "\ 可能会造成混淆。

    更多信息在;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 2013-07-12
      • 1970-01-01
      • 2022-06-25
      • 1970-01-01
      相关资源
      最近更新 更多