我会避免使用Convert.ToDateTime开始。我建议使用DateTime.TryParseor (最好)DateTime.TryParseExact。这两者都将返回一个指示转换是否成功的值,因此您无需开始捕获异常以跳过坏数据。例如:
DateTime parsed;
if (DateTime.TryParse(text, out parsed))
{
string reformatted = parsed.ToString("yyyy-MM-dd");
// Use reformatted
}
else
{
// Log error, perhaps?
}
Run Code Online (Sandbox Code Playgroud)
如果您有多种可能的格式,您应该考虑使用它的重载,TryParseExact它允许您在单个调用中指定多种格式。
除了格式之外,您还应该考虑要使用的文化。在上面的代码(和你的代码)中,它将使用执行线程的文化。这总是你想要的吗?文化可以影响各种事情 - 通常,如果您指定自定义格式,您希望使用不变文化。否则,您最终可能会意外地使用非公历,例如...
编辑:如果您的输入始终是 format dd-MM-yyyy,那么您可能应该使用:
DateTime parsed;
if (DateTime.TryParseExact(text, "dd-MM-yyyy", CultureInfo.InvariantCulture,
DateTimeStyles.Default, out parsed))
{
string reformatted = parsed.ToString(CultureInfo.InvariantCulture,
"yyyy-MM-dd");
// Use reformatted
}
else
{
// Log error, perhaps?
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6130 次 |
| 最近记录: |