DataTime操作的典型错误

简介:     不同的操作系统,dateTimePicker控件读出来的时间格式会有不同。下面是win8中文版中显示的时间格式: 图1 图2 图3 图4     按照上面的时间显示格式存储到DB中,当数据取出来时,我们想当然的认为这是一个“年-月-日 时:分:秒”组成的长字符串,只需要我们按照中间的空格将其取出,就会得到一个只有两个成员的字符串数组,然后再将其对应到界面上就OK了。

    不同的操作系统,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

相关文章
|
3月前
Qt 时间戳和时间相关的转换操作
Qt 时间戳和时间相关的转换操作
69 0
|
5月前
|
JSON 小程序 JavaScript
小程序返回的时间戳转化成时间
小程序返回的时间戳转化成时间
24 0
|
5月前
|
JSON 前端开发 数据格式
全局日期请求转换处理
全局日期请求转换处理
42 0
|
5月前
时间相关转换-验证
时间相关转换-验证
26 0
|
9月前
|
Linux
time模块: 时间戳、结构化时间、格式化时间的获取与相互转化
time模块: 时间戳、结构化时间、格式化时间的获取与相互转化
66 0
【SQL开发实战技巧】系列(十七):数据仓库中时间类型操作(初级)确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数
如何确定两个日期之间的工作日有多少天、计算—年中每周内各日期出现次数、确定当前记录和下一条记录之间相差的天数【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。本章节的三个需求:确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数有些许难度,不过建议还是学会比较好。
【SQL开发实战技巧】系列(十七):数据仓库中时间类型操作(初级)确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数
|
前端开发
前端工作小结61-时间戳转换
前端工作小结61-时间戳转换
79 0
|
存储 SQL 前端开发
解决方案:记录一下Date类型在传值时遇见的若干坑(String类型转为Date类型、mysql的表设置、UTC的设置)
解决方案:记录一下Date类型在传值时遇见的若干坑(String类型转为Date类型、mysql的表设置、UTC的设置)
解决方案:记录一下Date类型在传值时遇见的若干坑(String类型转为Date类型、mysql的表设置、UTC的设置)