将字符串日期格式化为特定格式的最佳方法是什么?
例如,如果输入为30/09/2014
,则格式为2014-09-30
或前者的任何其他类似日期格式?
答案 0 :(得分: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
}
由于我在LINQPad上创建了此示例,.Dump()
只是一种扩展方法。
解析具有/
作为日期分隔符的字符串时要小心。 "/"
custom format specifier具有的特殊含义,将我替换为指定文化日期分隔符的当前文化。这意味着,您的CurrentCulture
或指定的文化DateSeparator
property不是/
,如果您的字符串和格式相同,您的解析操作将失败甚至格式。
这就是我在我的示例中使用InvariantCulture
的原因,因为/
为DateSeparator
。