DRY字符串格式

Rya*_*tes 7 c# string.format formatexception

将string.format的常用格式(例如datetime)拉成可访问的常量的优雅方法是什么?

理想情况下,我想做类似以下的事情,但是当我尝试使用此代码时,我收到以下错误.

var now = DateTime.Now;
var format = "yyyy-MM-dd";
Console.WriteLine(string.Format("The date is {1:{0}}", format, now));
Run Code Online (Sandbox Code Playgroud)

[System.FormatException:输入字符串的格式不正确.]在Program.Main():第9行

这背后的原因是某些API需要特定的日期时间格式.我希望能够引用一个地方来获得这种格式,这样所有调用都可以.

我意识到以下内容会起作用,但它看起来并不优雅.

Console.WriteLine(string.Format("The date is {1:" + format + "}", format, now));
Run Code Online (Sandbox Code Playgroud)

48k*_*ocs 2

您可以采用应用程序常量路线 - 保存格式字符串的静态类。

namespace App.Framework {
    public static class AppConstant {
        public static readonly string DisplayDateShort = "MM/dd/yyyy";
    }
}
Run Code Online (Sandbox Code Playgroud)

就你的例子而言,它是有缺陷的;你想呼唤ToString()你的DateTime价值。

Console.WriteLine(now.ToString(AppConstant.DisplayDateShort));