【问题标题】:format DateTime with text in-between格式化 DateTime,中间有文本
【发布时间】:2019-08-23 18:56:11
【问题描述】:

我想以特定方式格式化我的 DateTime 对象。这是基础:

DateTime dt = new DateTime(2018, 11, 20, 15, 30, 5, 0);
Debug.WriteLine(dt.ToString("ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture));

输出将是Tue Nov 20 15:30:05 +01:00 2018。这几乎是我想要的:而不是+01:00,我想要string 变量myText 的值。

所以如果myText 的值是"hello world",那么输出应该是:

Tue Nov 20 15:30:05 hello world 2018

所以我的问题很简单:我需要写什么来获取格式zzz 部分除外)但中间有 string 变量的值?

我试过dt.ToString("ddd MMM dd HH:mm:ss " + myText + " yyyy", CultureInfo.InvariantCulture),但是myText = "hello world"会输出

Tue Nov 20 15:30:05 3ello worl20 2018

myText 的内容将被视为格式化,就像其余的一样。但我希望 myText 的内容按字面意思理解。

【问题讨论】:

    标签: c# datetime string-formatting string-concatenation


    【解决方案1】:

    您可以将文本用引号 (') 括起来,它会输出您想要的格式。

    dt.ToString("ddd MMM dd HH:mm:ss '" + myText + "' yyyy", CultureInfo.InvariantCulture);
    
    // output
    Tue Apr 02 12:37:49 hello world 2019
    

    它匹配来自helloh 和来自worldd,这就是您看到该结果的原因。

    您可以查看来自微软的Custom date and time format strings,其中有一个关于引号的部分(靠近底部)。在 DateTime 格式(或数字格式)中包含引号(单引号 ' 或双引号 ")会在结果字符串格式中引入字符串文字。

    正如@Dmitry 在评论中指出的那样,如果' 出现在您的字符串中,您可能需要使用myText?.Replace("'", "''")。另一种选择是使用双引号并照常转义:

    dt.ToString("ddd MMM dd HH:mm:ss \"" + myText + "\" yyyy", CultureInfo.InvariantCulture);
    

    【讨论】:

    • + myText?.Replace("'", "''") + 以便 escape ' 如果它们出现在 myText 中,则解决方案是完美的。
    • 你也可以只转义格式字符:dt.ToString(@"ddd MMM dd HH:mm:ss \Hello Worl\d yyyy", CultureInfo.InvariantCulture) 虽然这有点不方便。
    【解决方案2】:

    可以接受多行吗?我认为你应该能够做这样的事情:

    DateTime dt = new DateTime(2018, 11, 20, 15, 30, 5, 0);
    string x = (dt.ToString("ddd MMM dd HH:mm:ss X yyyy", CultureInfo.InvariantCulture));
    string z = x.Replace("X", "myText");
    Console.WriteLine(x);
    Console.WriteLine(Environment.NewLine);
    Console.WriteLine(z);
    

    我们在 dt.ToString() 中放了一个“X”,因为“X”不会被格式化,并将作为我们的占位符,在日期格式化后用我们想要的任何自定义文本替换值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多