none
dateTimePicker1.value=new DateTime(int类型,int类型,int类型)怎么提示错误 RRS feed

  • 问题

  • 新手,遇到了一个问题。求高人解答啊,谢谢了、我是从数据库读取一个DateTime类型数据然后以此值更改dateTimePiecker1的value。

    当使用以下代码

    using(DBBaoGaoEntities baoGaoShiTi = new DBBaoGaoEntities())

    {

              BaoGaoXinXi xinBaoGaoXinXi = new BaoGaoXinXi();//新建实体中对象

              //找到符合条件的报告编号
               var baoGaoXinXiZong=from c in baoGaoShiTi.BaoGaoXinXi
                                                   select c;
              foreach (var hangZhi in baoGaoXinXiZong)
               {
                          if (hangZhi.报告编号==bianHao.SelectedValue.ToString())
                          {
                              xinBaoGaoXinXi=hangZhi;
                          }
               }

                int year1 = xinBaoGaoXinXi.报告日期.Year;
                int month2 = xinBaoGaoXinXi.报告日期.Month;
                int day2 = xinBaoGaoXinXi.报告日期.Day;
                dateTimePicker.value=new DateTime(year1,month2,day2);

    }

    然后编译运行的时候提示以下错误:

    2012年5月30日 1:37

答案

  • 拜托了,求教具体方法啊.

    int year1 = xinBaoGaoXinXi.报告日期.Year;
                int month2 = xinBaoGaoXinXi.报告日期.Month;
                int day2 = xinBaoGaoXinXi.报告日期.Day;
    if(year1==0001)
    {
                dateTimePicker.value=new DateTime(year1,month2,day2,12,0,0);
    }
    else if(year1==9999)
    {
                dateTimePicker.value=new DateTime(year1,month2,day2,11,59,59);
    }
    else
    {
     dateTimePicker.value=new DateTime(year1,month2,day2,0,0,0);
    }

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 1060548017 2012年5月30日 12:47
    • 取消答案标记 1060548017 2012年5月30日 12:48
    • 已标记为答案 1060548017 2012年5月30日 14:25
    2012年5月30日 12:09
    版主

全部回复

  • DateTime的日期有一定限制的DateTime 值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间

    因此您必须保证year,month和time只能在上述范围之内。看错误提示,你的time貌似出问题了(0001/01/01 00:00:00,不支持!)

    建议这样做(如果是0001年或者9999年,除了格式化年月日,还要初始化time——时分秒)。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年5月30日 2:36
    版主
  • 我用标记检测过了,xinBaoGaoXinXi.报告日期 时间为2010.1.10日。而且我测试了老长时间,发现dateTimePicker.value=new DateTime(year1,month2,day2);  里面参数要是使用变量就出现这个问题、而用dateTimePiker.value=new DateTime(2010,1,10);确能正确设置。

    现在问题就在这里,都不知道怎么弄了。呵呵,非常感谢您的解答哈、

    2012年5月30日 5:52
  • 我用标记检测过了,xinBaoGaoXinXi.报告日期 时间为2010.1.10日。而且我测试了老长时间,发现dateTimePicker.value=new DateTime(year1,month2,day2);  里面参数要是使用变量就出现这个问题、而用dateTimePiker.value=new DateTime(2010,1,10);确能正确设置。

    现在问题就在这里,都不知道怎么弄了。呵呵,非常感谢您的解答哈、

    2010.01.10应该是可以的啊,我说过了——请满足DateTime类型的各个参数。请注意用if判断特殊日期(比如0001或者9999年的时候)。

    具体请参考相关DateTime:http://msdn.microsoft.com/zh-cn/library/system.datetime(v=vs.80).aspx


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年5月30日 5:57
    版主
  • 拜托了,求教具体方法啊.

    2012年5月30日 12:01
  • 拜托了,求教具体方法啊.

    int year1 = xinBaoGaoXinXi.报告日期.Year;
                int month2 = xinBaoGaoXinXi.报告日期.Month;
                int day2 = xinBaoGaoXinXi.报告日期.Day;
    if(year1==0001)
    {
                dateTimePicker.value=new DateTime(year1,month2,day2,12,0,0);
    }
    else if(year1==9999)
    {
                dateTimePicker.value=new DateTime(year1,month2,day2,11,59,59);
    }
    else
    {
     dateTimePicker.value=new DateTime(year1,month2,day2,0,0,0);
    }

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 1060548017 2012年5月30日 12:47
    • 取消答案标记 1060548017 2012年5月30日 12:48
    • 已标记为答案 1060548017 2012年5月30日 14:25
    2012年5月30日 12:09
    版主
  • 太感谢了。呵呵。找到问题了。

    是当初绑定数据库时触发了comBox的selectedValueChanged事件,导致验证的时候combox取了一个空值。

    谢谢哈、

    2012年5月30日 14:24
  • 太感谢了。呵呵。找到问题了。

    是当初绑定数据库时触发了comBox的selectedValueChanged事件,导致验证的时候combox取了一个空值。

    谢谢哈、

    不用谢,欢迎多来MSDN互相交流,互帮互助,共同进步!

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年5月31日 0:51
    版主