且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

DataTime操作的典型错误

更新时间:2022-02-19 12:16:05

    不同的操作系统,dateTimePicker控件读出来的时间格式会有不同。下面是win8中文版中显示的时间格式:

DataTime操作的典型错误

图1

DataTime操作的典型错误

图2

DataTime操作的典型错误

图3

DataTime操作的典型错误

图4

    按照上面的时间显示格式存储到DB中,当数据取出来时,我们想当然的认为这是一个“年-月-日 时:分:秒”组成的长字符串,只需要我们按照中间的空格将其取出,就会得到一个只有两个成员的字符串数组,然后再将其对应到界面上就OK了。这样处理是否OK的呢?

    实践证明,下面的代码不健壮的处理方式!在图6中,明显解析出来的是一个四个成员的数组。包含了星期和上午等信息!如果强行如何进行对应,那么就可能把类似“上午”这样的信息写到dateTimePicker这样的控件中!这样的必然会报出异常的,见图7。


  1. string[] dateList;
  2. if (tmpConf.startdate != null)
  3. {
  4.     dateList = tmpConf.startdate.Split(' ');
  5.     dateTimePicker1.Value = Convert.ToDateTime(dateList[0]);
  6.     dateTimePicker3.Value = Convert.ToDateTime(dateList[1]);
  7. }


DataTime操作的典型错误

图5

DataTime操作的典型错误

图6

DataTime操作的典型错误

图7


    因此,采用分割对应的方式来显示DB中存储的日期,有某些OS上是正确的,而在另外的OS上则会出现问题。

故正确的读取方式是直接取出,全字符串对应(前提是存储时要按照一定的格式进行):


  1. if (tmpConf.startdate != null)
  2. {
  3.     dateTimePicker1.Value = Convert.ToDateTime(tmpConf.startdate);
  4.     dateTimePicker3.Value = Convert.ToDateTime(tmpConf.startdate);
  5. }


DataTime操作的典型错误

图8