Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12471874
  • 博文数量: 1293
  • 博客积分: 13501
  • 博客等级: 上将
  • 技术积分: 17974
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 18:11
文章分类

全部博文(1293)

文章存档

2019年(1)

2018年(1)

2016年(118)

2015年(257)

2014年(128)

2013年(222)

2012年(229)

2011年(337)

分类: C#/.net

2014-04-21 08:55:54

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

clip_image002

图1

clip_image004

图2

clip_image006

图3

clip_image008

图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. }


clip_image010

图5

clip_image012

图6

clip_image014

图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. }


clip_image016

图8

阅读(3520) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~