一、概述
在開發中,我們經常需要將時間字符串轉換為具體日期類型,這是一個非常常見的需求。而 C# 在日期轉換方面給我們提供的方法十分靈活,本文將會介紹 C# 中字符串如何轉換為日期類型,以及實用的技巧和注意點。
二、方法
1、使用 DateTime.Parse() 方法轉換
在 C# 中,可以使用 DateTime.Parse() 方法將字符串轉換為 DateTime 對象。例如:
string date = "2020/11/11"; DateTime dateTime = DateTime.Parse(date); Console.WriteLine(dateTime.ToString()); // 輸出:2020/11/11 12:00:00 上午 12:00:00
需要注意的是,DateTime.Parse() 方法在轉換時需要確保字符串的格式和本地區域設置一致,否則會拋出異常。
2、使用 DateTime.ParseExact() 方法轉換
如果我們已經知道了日期字符串的格式,則可以使用 DateTime.ParseExact() 方法進行轉換。例如:
string dateStr = "2020-11-11 11:11:11"; string format = "yyyy-MM-dd HH:mm:ss"; DateTime dateTime = DateTime.ParseExact(dateStr, format, CultureInfo.InvariantCulture); Console.WriteLine(dateTime.ToString()); // 輸出:2020/11/11 11:11:11 上午 11:11:11
在這段代碼中,我們需要傳入格式字符串(”yyyy-MM-dd HH:mm:ss”)以及 CultureInfo 對象來指定格式和本地區域設置。
3、使用 DateTime.TryParse() 方法轉換
由於日期字符串格式不確定,我們需要避免因為格式錯誤而導致程序拋出異常。因此,我們可以使用 DateTime.TryParse() 方法進行日期時間字符串轉換。例如:
string date = "2020/11/11"; DateTime dateTime; if (DateTime.TryParse(date, out dateTime)) { Console.WriteLine(dateTime.ToString()); } else { Console.WriteLine("字符串無法成功轉換為日期"); } // 輸出:2020/11/11 12:00:00 上午 12:00:00
在上面的代碼中,我們使用了 TryParse() 方法來嘗試將字符串轉換為 DateTime 類型。如果轉換成功,則會返回 true,並將轉換後的值賦值給 dateTime 變量。否則返回 false。
三、實用技巧和注意點
1、使用 DateTime.TryParseExact() 方法進行格式校驗
在日期字符串格式不確定的情況下,為了避免 TryParse() 方法返回 false,我們可以使用 DateTime.TryParseExact() 方法進行格式校驗。例如:
string date = "2020-11-11"; string[] formats = { "yyyy/MM/dd", "yyyy-MM-dd", "yyyyMMdd" }; DateTime dateTime; if (DateTime.TryParseExact(date, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) { Console.WriteLine(dateTime.ToString()); } else { Console.WriteLine("字符串無法成功轉換為日期"); } // 輸出:2020/11/11 12:00:00 上午 12:00:00
在上面的代碼中,我們傳入了多個格式字符串進行校驗,保證了如果字符串的格式在這些格式中的任何一個都可以被成功轉換為 DateTime 類型。
2、使用 TryParseExact() 方法自定義格式校驗
如果你已經確認了日期字符串的格式,並且想要通過自定義格式來進行校驗,可以使用 TryParseExact() 方法自定義格式校驗。例如:
string dateStr = "2020年11月11日"; string format = "yyyy年MM月dd日"; DateTime dateTime; if (DateTime.TryParseExact(dateStr, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) { Console.WriteLine(dateTime.ToString()); } else { Console.WriteLine("字符串無法成功轉換為日期"); } // 輸出:2020/11/11 12:00:00 上午 12:00:00
在上面的代碼中,我們通過 format 字符串來約束輸入的字符串格式,確保輸入的字符串和指定的格式一致。
3、使用 DateTime.TryParseExact() 和 CultureInfo 對象進行本地化設置
在不同的區域設置下,日期字符串的格式可能會不同。為了確保轉換的準確性和正確性,我們可以使用 DateTime.TryParseExact() 和 CultureInfo 對象進行本地化設置。例如:
string dateStr = "11/11/2020"; string[] formats = { "yyyy/MM/dd", "yyyy-MM-dd", "MM/dd/yyyy" }; CultureInfo culture = new CultureInfo("en-US"); DateTime dateTime; if (DateTime.TryParseExact(dateStr, formats, culture, DateTimeStyles.None, out dateTime)) { Console.WriteLine(dateTime.ToString()); } else { Console.WriteLine("字符串無法成功轉換為日期"); } // 輸出:2020/11/11 12:00:00 上午 12:00:00
在上面的代碼中,我們首先設置了本地區域為 “en-US”,然後將字符串格式限定為 “yyyy/MM/dd”、”yyyy-MM-dd”、”MM/dd/yyyy” 中的任意一個。這樣可以防止由於本地區域設置導致的轉換錯誤。
結論
本文介紹了在 C# 中字符串如何轉換為日期類型,並介紹了一些實用的技巧和注意點。需要注意的是,在進行字符串轉換時需要確保格式的準確性和統一性,以及本地化設置和格式校驗的重要性,這可以為後期的開發和維護帶來便利。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/197447.html