不同的操作系统,dateTimePicker控件读出来的时间格式会有不同。下面是win8中文版中显示的时间格式:
图1
图2
图3
图4
按照上面的时间显示格式存储到DB中,当数据取出来时,我们想当然的认为这是一个“年-月-日 时:分:秒”组成的长字符串,只需要我们按照中间的空格将其取出,就会得到一个只有两个成员的字符串数组,然后再将其对应到界面上就OK了。这样处理是否OK的呢?
实践证明,下面的代码不健壮的处理方式!在图6中,明显解析出来的是一个四个成员的数组。包含了星期和上午等信息!如果强行如何进行对应,那么就可能把类似“上午”这样的信息写到dateTimePicker这样的控件中!这样的必然会报出异常的,见图7。
-
string[] dateList;
-
if (tmpConf.startdate != null)
-
{
-
dateList = tmpConf.startdate.Split(' ');
-
dateTimePicker1.Value = Convert.ToDateTime(dateList[0]);
-
dateTimePicker3.Value = Convert.ToDateTime(dateList[1]);
- }
图5
图6
图7
因此,采用分割对应的方式来显示DB中存储的日期,有某些OS上是正确的,而在另外的OS上则会出现问题。
故正确的读取方式是直接取出,全字符串对应(前提是存储时要按照一定的格式进行):
-
if (tmpConf.startdate != null)
-
{
-
dateTimePicker1.Value = Convert.ToDateTime(tmpConf.startdate);
-
dateTimePicker3.Value = Convert.ToDateTime(tmpConf.startdate);
- }
图8