我想格式化日期時間列表。一個日期的格式與我所提供的格式相同,但因素不適用。該行代碼如下。有人能告訴我如何跳過下面的行錯誤嗎?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