该字符串未被识别为有效的 DateTime
DateTime.Parse(time).AddMinutes(minutes)函数老出错CATCH 后
time 格式是正确的
如:
2010-6-16 21:26:35
2010-5-22 15:21:03
2010-6-16 21:08:42 目前的情况就是隔几个星期就会出现一次这样的问题,解决的方案目前只能通过手动回收程序池,回收后就好了,大家感觉是什么问题,是.NET的BUG吗?怎么解决比较好

解决方案 »

  1.   

    别老想着BUG
    你try catch捕获一下异常后写入日志记录传的什么东西,就能知道原因
      

  2.   

    报“该字符串未被识别为有效的 ”  唯一的解释就是 字符串不能被转换为datetime格式你在catch时候把time 写到一个文件中看看  应该不会有其他原因 期待高手
      

  3.   

    我不知道你要转换成日期的字符串是怎么生成的,但是看你描述的错误隔几个星期出现一次,感觉你的要转换成日期的字符串可能遇到点问题,比方说6月份你写成
    2010-6-31 21:08:42
    因为6月份不可能有31号,所以转换可能会出错只是猜测,楼主try catch,在catch里把你要转的字符串写到日志里
      

  4.   

    2010-6-16 21:26:35
    2010-5-22 15:21:03
    2010-6-16 21:08:42  
    这个就是我catch 到的time  ,所以我才怀疑是.NET的BUG
      

  5.   

    DatetTime? dt=null;
    DateTime.TryParse("",out time);
    检查值
      

  6.   

    值肯定是没有问题的,手工测试这些值都没问题,存在的问题是当程序(WEB应用程序)连续跑了1个月左右,就可能出现这样的问题,时间转换异常,通过回收应用程序池能解决
      

  7.   

    会不会是有别的应用程序改变了日期的格式,如2010-06-16被改成 2010/06/16,你在应用程序中加这两句试看看:
    System.Globalization.CultureInfo CultureInfoSG = new System.Globalization.CultureInfo("zh-CN", false);
    Application.CurrentCulture = CultureInfoSG;另外Win7和XP的日期默认格式并不一样...XP是yyyy-MM-dd,WIN7是yyyy/M/d.
      

  8.   

     这个是架设在IIS上的,服务器是2003,我感觉和时间格式没啥大关系CACHE写到文件的格式就是2010-06-16这个格式,肯定没问题
      

  9.   

    public static int StrDateDiffMinutes(string time, int minutes)
    {
    if (time == "" || time == null)
    return 1;
                TimeSpan ts;
                try
                {
                    ts = DateTime.Now - DateTime.Parse(time).AddMinutes(minutes);
                    if (ts.TotalMinutes > int.MaxValue)
                    {
                        return int.MaxValue;
                    }
                    else if (ts.TotalMinutes < int.MinValue)
                    {
                        return int.MinValue;
                    }
                }
                catch
                {                Dcuz.Catch.WriteLog.write(HttpContext.Current.Request.Url.PathAndQuery,"日期格式转换错误"+ time);
                    Dcuz.Catch.WriteLog.StateFile();
                    return 1;
                } return (int)ts.TotalMinutes;
    }
    这个是该方法
      

  10.   

    time,minutes有值吗?或者这2个值正常吗?调试看下吧。
      

  11.   

    说.NET有bug的99.9999%的都是自己的bug...你那个time参数从哪儿来的?去源头检查...
      

  12.   

    我不怀疑别人,也不怀疑我自己,我只用数据说话,你写一个程序,特简单一个程序(调用.NET的一些处理方法),然后一直运行,1秒钟执行一次,连续运行1个月,CATCH他,如果CATCH不到错误,我把名字倒着写
      

  13.   

    我做一个winform硬件程序  遇到过这个问题  有时候才报; 我报这个错的原因是  硬件模块传上来的时间是不符合时间的规范,所以你加 时间差是会出现这个错误! 希望有用!! 
      

  14.   

    呵呵,我在本地没有出现问题,但是上传到服务器就出现楼主这样的问题,我也挺郁闷啊,之前还出现DBNULL值,因为我开始时从数据库取时间到APP全局对象里面,我查看了数据库里面的时间没有问题,本地也没有问题,怎么会这样呢,我也迷惑了