将日期格式化为特定格式

use*_*430 1 .net c# datetime

将字符串日期格式化为特定格式的最佳方法是什么?

例如,如果输入30/09/2014它将被格式化为2014-09-30前者的任何其他类似的日期格式?

Son*_*nül 8

首先,DateTime没有任何隐式格式.字符串有.

听起来你只需要解析你的字符串并用DateTime.ToString()类似方法格式化它;

string s = "30/09/2014";
DateTime dt;
if(DateTime.TryParseExact(s, "dd/MM/yyyy", CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    dt.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture).Dump();
    // Result will be 2014-09-30
}
Run Code Online (Sandbox Code Playgroud)

因为我在LINQPad上创建这个例子,.Dump()所以只是一个扩展方法.

解析具有/日期分隔符的字符串时要小心. "/"自定义格式说明符具有特殊含义,用指定的文化日期分隔符的当前文化替换我.这意味着,您CurrentCulture或指定的culture的DateSeparator属性不是/,即使您的字符串和格式是相同的格式,您的解析操作也将失败.

这就是我InvariantCulture在我的例子中使用的原因,因为它有/一个DateSeparator.