用中间的文本格式化 DateTime

我想以特定方式格式化我的 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从字面上理解 的内容。


MYYA
浏览 87回答 2
2回答

白猪掌柜的

您可以将文本用引号 ( ') 括起来,它会输出您想要的格式。dt.ToString("ddd MMM dd HH:mm:ss '" + myText + "' yyyy", CultureInfo.InvariantCulture);// outputTue Apr 02 12:37:49 hello world 2019h它与fromhello和dfrom which相匹配,world这就是您看到该结果的原因。您可以查看 Microsoft 的Custom date and time format strings,其中有一个关于引号的部分(靠近底部)。在 DateTime 格式(或数字格式)中包含引号(单引号'或双引号)会在生成的字符串格式中引入字符串文字。"正如@Dmitry 在评论中指出的那样,您可能需要使用myText?.Replace("'", "''")if'出现在您的字符串中。另一种选择是像往常一样使用双引号和转义:dt.ToString("ddd MMM dd HH:mm:ss \"" + myText + "\" yyyy", CultureInfo.InvariantCulture);

jeck猫

用多行来做这个可以接受吗?我认为你应该能够做这样的事情: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”不会被格式化,并且将作为我们的占位符在日期格式化后用我们想要的任何自定义文本替换值。
打开App,查看更多内容
随时随地看视频慕课网APP