这个东西老是提示 string was not recognized as a valid datetime...
以前都能用,但是现在我改都没改过,却不能用。
大家帮个忙看看。.
try
                {
                    Object expirydate = DBNull.Value;
                    Decimal Amount = 0;                   
                    // --- Get Member Type ID ---
                    for (int i = 0; i < gvMembership.Rows.Count; i++)
                    {
                        if (((RadioButton)gvMembership.Rows[i].FindControl("rbMembershipSelect")).Checked)
                        {
                            MemberTypeID = ((RadioButton)gvMembership.Rows[i].FindControl("rbMembershipSelect")).GroupName;
                            Prefix = ((Label)gvMembership.Rows[i].FindControl("lblPrefix")).Text;
                            MembershipNo = getMembershipNo();
                            expirydate = ((Label)gvMembership.Rows[i].FindControl("lblExpiryDate")).Text;
                            if (expirydate.ToString().Trim() == "Unlimit")
                            {
                                expirydate = DBNull.Value;
                            }
                            else
                            {
                                expirydate = DateTime.ParseExact(expirydate.ToString(), "dd/MM/yyyy", null);
                            }
                            Amount = Convert.ToDecimal(((Label)gvMembership.Rows[i].FindControl("lblCharge")).Text.Replace("$", "").Replace(",", ""));
                            break;
                        }
                    }
老是提示这一句有错  expirydate = DateTime.ParseExact(expirydate.ToString(), "dd/MM/yyyy", null);即使它类型错误了吧,我转,还是错,
我转成 expirydate = Convert.ToString(DateTime.ParseExact(expirydate.ToString(), "dd/MM/yyyy", null));说是OS的问题吧,我将那个null 改为System.Globalization.CultureInfo.InvariantCulture  
也还是提示同样的错误。我在网上搜索下,发现这个问题的出现几率还真多,可是解决的方法怎么就没下文呢。各位大牛,帮帮忙看下

解决方案 »

  1.   

    呵呵 很明显是你的函数使用错误了。http://msdn.microsoft.com/zh-cn/library/system.datetime.parseexact(VS.80).aspx
      

  2.   

    调试看看你的expirydate是什么东西
      

  3.   

    expirydate不是日期格式数据,单步调试看看
      

  4.   


    首先断点确认一下你的数据格式是否正确然后就是“/”在DateTime格式化时是有特殊意义的,与你的区域设置有关
    如果你的数据源是dd/MM/yyyy格式的,那么在使用DateTime.ParseExact时,要么对“/”进行转义,要么指定IFormatProvider
    string test = "18/05/2010";
    //DateTime dt = DateTime.ParseExact(test, "dd/MM/yyyy", new CultureInfo("en-US"));
    DateTime dt = DateTime.ParseExact(test, @"dd\/MM\/yyyy", null);
    richTextBox2.Text = dt.ToString("yyyy-MM-dd");
      

  5.   

    向以上热心的朋友道声谢谢,昨天晚上断网,没网上。现在我们继续讨论谢谢哈!
    1楼的,我函数没用错呀~~2楼的,expirydate 是我从数据源中取出的数据,我不像例子一样,直接用String,这样不利于我取数据。3楼的,参考2楼,然后就是因为在转的过程中才出现错误4楼的,数据格式,昨天看了一下午,今天继续再看看,看有没看漏眼..5楼的,很感谢你详细回答,我都试过了,今天再试试!----总的说,这东西之前没改过,是能用的~~而且很正常,
    但是现在不能用,就奇怪了。而且运行的环境配置都一样!希望大家再给我点提示提示,谢谢这个问题,解决的方法都几乎难以得出。希望我这帖子能总结出来....