将日期格式化为特定格式

时间:2014-10-01 12:48:53

标签: c# .net datetime

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

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

1 个答案:

答案 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