今天遇到一個特別的需求,需要從下面的字符串中轉換成一個DateTime對象:
[07-13 15:50:42]
主要問題是這個時間不是標准的時間,而是自定義的格式,即開頭是月-日,然后是時間。
使用最常用的DateTime.Parse(string dateTimeStr)無法轉換,問題就在於這個自定義格式上。
搜索了之后,我找到了下面的方法:
public static DateTime ParseExact( string s, string format, IFormatProvider provider )
使用例子如下:
var dateTimeStr = "07-13 15:50:42"; var dateTime = DateTime.ParseExact(dateTimeStr, "MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
使用效果如下:
例子2:
MessageBox.Show(DateTime.ParseExact("07131550", "MMddHHmm", System.Globalization.CultureInfo.CurrentCulture).ToString());
結果:2014/7/13 15:50:00
如果你使用的其它特殊語言,比如美國或者日文啥的,最后的參數你可能需要獲取下對應的Culture。
注意:
- 如果dateTimeStr或者format 是null,會拋出ArgumentNullException異常。
- 如果dateTimeStr或者format 是空字符串,則拋出FormatException異常。
參考資料
DateTime.ParseExact Method (String, String, IFormatProvider)