DateTimeFormatInfo.InvariantInfo

DateTimeFormatInfo.InvariantInfo:获取不依赖于区域性的(固定的)。

如果本地的日期格式是:英语(英国)dd/MM/yyyy HH:mm。

string time = DateTime.Now.ToString();        // 14/10/2014 19:07:08
DateTime dateTime = DateTime.Parse(time);      // dateTime = {14/10/2014 19:07:08}
DateTime dateTime1 = DateTime.Parse(time, DateTimeFormatInfo.InvariantInfo);  // 该字符串未被识别为有效的 DateTime。

以上的time同样可能取之数据库的某个日期字段,即使服务器的日期格式是中文yyyy-MM-dd格式的,但是返回的数据集的日期字段会自动转换成本地的日期格式,即:英语(英国)dd/MM/yyyy HH:mm。所以说:DateTime.Parse(time, DateTimeFormatInfo.InvariantInfo)的时候,需要考虑这个time是不是本地的日期格式,如果是的话,就需要慎重使用DateTimeFormatInfo.InvariantInfo了。

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("zh-CN");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
string strSql = "SELECT SYSDATETIME()";
DataTable dt = dBAccess.ExecuteDataSet("", strSql, CommandType.Text, null).Tables[0];
string sysTime = dt.Rows[0][0].ToString(); // 2014/10/14 19:41:37中文格式的时间
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss", DateTimeFormatInfo.InvariantInfo); // 2014-10-14 19:41:37
string time1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // 2014-10-14 19:41:37:无语
DateTime dateTime = DateTime.Parse(sysTime, DateTimeFormatInfo.InvariantInfo); // dateTime = {2014/10/14 19:41:37}
time = dateTime.ToString("tt", DateTimeFormatInfo.InvariantInfo); // PM:计算机设置格式
time1 = dateTime.ToString("tt"); // 下午:忽略计算机设置格式

总结:DateTimeFormatInfo.InvariantInfo还是不用的好。以后出问题的时候再用吧,这里标记一下。

posted @ 2015-04-15 19:08  江境纣州  阅读(307)  评论(0编辑  收藏  举报