Kja*_*ara 1 c# datetime string-concatenation string-formatting
我想以一种特定的方式格式化我的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));
Run Code Online (Sandbox Code Playgroud)
输出将是Tue Nov 20 15:30:05 +01:00 2018。这几乎是我想要的:而不是+01:00我想要的string变量值myText。
因此,如果myText具有value "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从字面上理解的内容。
您可以将文本括在引号(')中,然后将输出所需的格式。
dt.ToString("ddd MMM dd HH:mm:ss '" + myText + "' yyyy", CultureInfo.InvariantCulture);
// output
Tue Apr 02 12:37:49 hello world 2019
Run Code Online (Sandbox Code Playgroud)
它与hfrom hello和dfrom 匹配,world这就是您看到该结果的原因。
您可能会查看来自Microsoft的“ 自定义日期和时间格式”字符串,该字符串具有有关引号的部分(底部附近)。在DateTime格式(或Numeric格式)中包含引号(单引号'或双引号")会以结果字符串格式引入字符串文字。
正如@Dmitry在评论中指出的那样,您可能需要使用myText?.Replace("'", "''")if如果'出现在字符串中。另一种选择是使用双引号和照常转义:
dt.ToString("ddd MMM dd HH:mm:ss \"" + myText + "\" yyyy", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)