你会如何重写下面的内容,所以它的眼睛更容易一些?
Func<DateTime, String> formatter = null;
formatter = new Func<DateTime, String>(d =>
{
var r = "";
foreach (var i in new[] { d.Day, d.Month, d.Year })
{
if (i < 10) r += "0";
r += i.ToString();
}
return r;
});
Run Code Online (Sandbox Code Playgroud)
我把它重写为:
Func<DateTime, String> formatter = d => d.ToString("ddMMyyyy",
CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
唯一不同的是,对于1000AD之前的日期,这将填充到4位而不是2 ...
编辑:正如评论中所述,这并没有复制原始代码中的错误 - 它会将(比方说)5个月格式化为"055".在原始代码中解决此问题的最简单方法是:
if (i < 10) r += "0";
r += i;
Run Code Online (Sandbox Code Playgroud)
(但我还是更喜欢我的代码:)