我想格式化日期时间列表。一个日期的格式与我所提供的格式相同,但因素不适用。该行代码如下。有人能告诉我如何跳过下面的行错误吗?DateTime转换异常
Convert.ToDateTime("22-01-2013 00:00:00").ToString("yyyy-MM-dd");
我想格式化日期时间列表。一个日期的格式与我所提供的格式相同,但因素不适用。该行代码如下。有人能告诉我如何跳过下面的行错误吗?DateTime转换异常
Convert.ToDateTime("22-01-2013 00:00:00").ToString("yyyy-MM-dd");
我会避免使用Convert.ToDateTime
开始。我建议使用DateTime.TryParse
或(最好是)DateTime.TryParseExact
。这两个都会返回一个值,指示转换是否成功,所以您不需要开始捕获异常以跳过不良数据。例如:
DateTime parsed;
if (DateTime.TryParse(text, out parsed))
{
string reformatted = parsed.ToString("yyyy-MM-dd");
// Use reformatted
}
else
{
// Log error, perhaps?
}
如果你有多种可能的格式,你应该考虑using the overload of TryParseExact
which allows you to specify multiple formats in a single call。
以及格式,你应该考虑文化你想要使用。在上面的代码(和你的代码)中,它将使用执行线程的文化。那总是你想要的吗?文化可以影响各种事物 - 通常如果你指定了自定义格式,你想使用不变文化。否则,你可能最终会使用非公历意外,例如...
编辑:如果你的输入总是格式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?
}
如何将22-01-2013的格式转换为'yyyy-MM-dd'?我只需要'yyyy-MM-dd'的日期时间:( – NewBie
@NewBie:如果您知道格式将始终为'dd-MM-yyyy',则应该使用'TryParseExact'而不是'TryParse'。您的问题是在您的预期投入方面非常不明确。 –
代替Convert.ToDateTime
使用DateTime.Parse
或DateTime.ParseExact
ParseExact
让您的格式更多的控制权,因此,例如:
DateTime.ParseExact("22-01-2013 00:00:00","dd-MM-yyyy HH:mm:ss",CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");
还有一个TryParseExact
变种,它允许你优雅处理解析错误。
尝试使用DateTime.ParseExact()
方法代替。
将指定的日期和时间字符串表示形式转换为其等效日期时间的 。
public static void Main(string[] args)
{
Console.WriteLine(DateTime.ParseExact("22-01-2013 00:00:00", "dd-MM-yyyy HH:mm:ss", CultureInfo.CurrentCulture).ToString("yyyy-MM-dd"));
}
这里是一个DEMO
。
还检查出Coding Best Practices Using DateTime in the .NET Framework
我认为每个.NET开发人员都应该阅读。
尝试与:
DateTime.ParseExact("22-01-2013 00:00:00","dd-MM-yyyy HH:mm:ss",CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");
这样你可以指定确切的格式为您的日期字符串。
这段代码有什么问题?你在说什么“因素”? –
你有什么异常? – davioooh
试试这个,我没有得到任何错误。你遇到了什么错误?运行该应用程序的文化是什么。 – Oded