0

在我的 Web 项目中,我正在解析在日期选择器中选择的日期,并将其与从数据库中获取的日期进行比较,直到昨天它工作正常,但从今天早上开始它会抛出格式异常,这可能是问题所在,

我的代码是,

  try
        {
            ReportDocument rpt = new ReportDocument();
            DateTime dt = DateTime.Parse(frmtxtdt.Text); // Exception Thrown here
            DateTime dt1 = DateTime.Parse(frmtxtdt.Text);
            DateTime date = DateTime.Parse(DateTime.Today.ToShortDateString());
            DateTime date1 = DateTime.Parse(DateTime.Today.ToShortDateString());
            string frtxt = String.Format("{0:MM-dd-yyyy}", dt);
            string totxt = String.Format("{0:MM-dd-yyyy}", dt1);
            DataSet ds = Namespace.SP.Storedprocedure(frtxt,totxt).GetDataSet();

            if (!IsPageRefresh)
           {
               if (ds.Tables[0].Rows.Count > 0)
               {
                   if(frtxt == ds.Tables[0].Rows[0]["Date"].ToString()
                   && totxt == ds.Tables[0].Rows[0]["Date"].ToString())
                   {

                          ds.Tables[0].TableName = "Passkeys";

                          ds.WriteXml(Server.MapPath("~/XML/Passkeys.xml"));
                          string filename = Server.MapPath("~/Upload/Pkey_rpt.rpt");

                          rpt.Load(filename);
                          rpt.SetDataSource(ds);

                          rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Passkeys - " + ds.Tables[0].Rows[0]["Date"].ToString());
                    }

            }
            else if(frmtxtdt.Text.Trim() !=null && totxtdt.Text.Trim()!=null)
            {
                if (frtxt == String.Format("{0:dd-MM-yyyy}", date)
                    && totxt == String.Format("{0:dd-MM-yyyy}", date1) 
                    && ds.Tables[0].Rows.Count == 0)
                {

                   ClientMessaging( "Pass Key(s) Not Yet Delivered for the Selected Date...");

                }
                else
                {

                    ClientMessaging( "There is No Schedule for the Selected date....");
                }

            }
         }

        }
        catch (Exception ex)
        {
            lblmsg.Text = ex.Message;
        }
4

3 回答 3

3

今天是2013 年 6 月13日。它可能以前工作过,因为那天是 12 或更少。您需要确保来自选择器的日期格式与解析时预期的格式相同。

目前,看起来它正在将日期解析为月份。

于 2013-06-13T07:43:53.497 回答
2

根据您期望解析的日期格式,在 CultureInfo 上明确

CultureInfo GBCultureInfo = new CultureInfo("en-GB"); // dd/MM/YYYY
// CultureInfo USCultureInfo = new CultureInfo("en-US"); // MM/dd/YYYY

dt = DateTime.Parse(frmtxtdt.Text,GBCultureInfo);
于 2013-06-13T07:44:43.083 回答
1

试试这样,放置代码

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");//you can change to any country 
  ReportDocument rpt = new ReportDocument();
于 2013-06-13T07:40:26.093 回答