參數說明
CultureInfo.CurrentCulture獲取當前線程的區域信息中,包括DateTimeFormat 日期顯示格式(日期分隔符)和 NumberFormat 貨幣。
試例:
1、時間中沒有使用分割符的情況:
string temp = "18991230" ;
DateTime dateTemp = DateTime.ParseExact(temp, "yyyyMMdd", CultureInfo.CurrentCulture, DateTimeStyles.None);
2、時間中使用分割符的情況:
string temp = "1899-12-30" ;
DateTime dateTemp = DateTime.ParseExact(temp, "yyyy-MM-dd", CultureInfo.CurrentCulture, DateTimeStyles.None);
DateTime dateTemp = DateTime.ParseExact(temp, "yyyy/MM/dd", CultureInfo.CurrentCulture, DateTimeStyles.None);
都正確,原因:
CultureInfo.CurrentCulture獲取當前線程的CultureInfo的DateTimeFormat屬性作為IFormatProvider,然后在DateTimeParse.ParseByFormat方法中,遇到format參數的/字符時,會比較輸入日期字符串的當前字符是否為當前DateTimeFormatInfo的DateSeperator,如果是,則返回true,即允許轉換,如果不是則返回false。當前線程的區域信息中,日期分隔符即為-,因此,轉換得以成功。
像有分割符的情況最好使用下面方式:
string temp = "1899-12-30" ;
DateTimeFormatInfo dtfi = new CultureInfo("zh-CN", false).DateTimeFormat;
DateTime dateTemp = DateTime.ParseExact(temp "yyyy-MM-dd", dtfi, DateTimeStyles.None) ; //使用當前分割符