我现在做一个网站..昨天放到服务器测试某个栏目的时候.发现一个奇怪的问题..那个栏目有一个开始时间跟结束时间.当不输入的时候.机会抛出 System.FormatException: String was not recognized as a valid DateTime. at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) at System.DateTime.Parse(String s, IFormatProvider provider, DateTimeStyles styles) at System.DateTime.Parse(String s, IFormatProvider provider) at System.DateTime.Parse(String s) at System.Convert.ToDateTime(String value) at KYCMS.BLL.zguidecontent.detailtemp(String strname, String lan, String uloginname, String title, String linkurl, String catpicfile, String catpicfileb, String vicetitle, String intro, String titledate, String areagroup, String activefenbu, String quanyi, String activebeginTime, String activeendtime) at KYCMS.BLL.zguidecontent.getdetail(String lan, String uloginname, Int32 id, Int32 catid, Int32 PageNo, Int32 flagid) at KYCMS.BLL.ZMakebasect.MK_guidedetail(String lan, String uloginname, Int32 id, Int32 catid) at KYCMS.WEB.kyzmanage.zongmanage.manage_content_guideadd.add_Click(Object sender, EventArgs e)
这样一个错误..但是我在本机测试都是可以的..哪位大虾解决了..另开贴加分..分300.

解决方案 »

  1.   

    DateTime.Parse的参数不能为空,
    你在用该方法前应该对字符串进行是否为空的判断!!
    string.isNullOrEnpty()
      

  2.   

    System.FormatException: String was not recognized as a valid DateTime.
    -----
    说的字符串不能转换为日期发现一个奇怪的问题..那个栏目有一个开始时间跟结束时间.当不输入的时候.机会抛出
    --------------------
    没输入 你是怎样处理的  难道是null去转换为日期 所有出异常了
      

  3.   

    字符串不被确认为有效的DateTime。 
     判断不能为空  或数据库处理....
      

  4.   

     System.FormatException: String was not recognized as a valid DateTime. 这句很明显:字符串不被验证成一个有效的日期类型
      

  5.   

    转换错误 很明显啊  事件为空的时候向表中的datatime字段插入了空值
      

  6.   

    public static bool TryParse(
    string s,
    out DateTime result
    )DateTime dt;
    if(DateTime.TryParse("2010-4-15",out dt))
    {
      Console.Write(dt.ToString());
    }
      

  7.   

    赫赫 我知道你的问题在什么地方了
    首先楼上的各位都很清楚的指明了 肯定是日期转换错误,但是由于你在本地调试是正确的,那么肯定一点 你转换日期的时候肯定是默认转换的吧?
    我个人感觉可能是服务器日期格式和你本地的不同,建议你确认下,并且 对日期格式转换的时候注意format
      

  8.   

    KYCMS.BLL.zguidecontent.detailtemp方法字符串值
    DateTime.TryParse("",out dt)
     其他格式DateTime.ParseExact
      

  9.   

    大家说得都很清楚了,是传入的日期不是一个有效的日期格式,建议调试一下,监视一下传入的字符值。另外有些日期控件datapicker,要求结束日期要大于开始日期。
      

  10.   

    建议使用:
    DateTime.TryParseExact(输入的字符串, "yyyy/M/d", null, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out date)
      

  11.   

    和操作系统的版本以及语言设置有关系, 不同的Culture的日期格式不一样,DateTime.Parse只能Parse某些格式的日期。 所以才会出现“字符串不被验证成一个有效的日期类型”。而且我看到你的Parse方法里面还指定一些其它的参数,把方法贴出来看下。
      

  12.   

    把默认值设为null,在Inserting事件写如下代码
    protected void SqlDataSource2_Inserting(object sender, SqlDataSourceCommandEventArgs e)
            {
    if (e.Command.Parameters["@begin_time"].Value==null)
                    e.Command.Parameters["@begin_time"].Value = DateTime.Now;
    http://www.mystruggle.com.cnhttp://www.mybuffet.cn
      

  13.   

    DateTime.TryParse("",out dt)
    DateTime.ParseExact
      

  14.   

    是不是你服务器上的数据库的开始和结束日期字段设置为不允许为空了,你最好还是在程序里做个判断:if(!string.IsNullOrEmpty(txtStartTime.Text.Trim()) && !string.IsNullOrEmpty(txtStartTime.Text.Trim()))
    {
        //操作
    }
      

  15.   

    if(!string.IsNullOrEmpty(txtStartTime.Text.Trim()) && !string.IsNullOrEmpty(txtEndTime.Text.Trim()))
    {
      //操作
    }
      

  16.   

    这是JS的一个打印 方法可以打出你想打的地方,不知这是不是你想要的结果?  function printpreview()
       { 
             bdhtml=window.document.body.innerHTML;
               sprnstr="<!--startprint-->";
               eprnstr="<!--endprint-->";
               prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17); 
               prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));
               window.document.body.innerHTML=prnhtml;
               window.print();
               window.parent.returnValue='0';   
          }
      

  17.   

    你说在本机好使 在服务器上不好使 楼上有一哥们说是数据库的事  我同意我大胆的猜想一下  你可能在本机数据库里的“开始时间跟结束时间”字段里用了默认的值“(getdate())”而在服务器上没有用。所以说“当不输入的时候”就会出错.