【问题标题】:String was not recognized as a valid DateTime when converting to DateTime转换为 DateTime 时,字符串未被识别为有效的 DateTime
【发布时间】:2013-07-30 17:09:40
【问题描述】:

我正在尝试将字符串转换为 DateTime,然后将其插入 sql。 在我的本地计算机上一切正常,但在服务器上应用程序抛出异常:

String was not recognized as a valid DateTime

我使用文本框来创建一个日期时间对象,如下所示:

我正在使用这一行来构建日期:

start = startEventTB.Text + " " + ShourDD.SelectedValue + ":" + SminuteDD.SelectedValue;
        end = endEventTB.Text + " " + EhourDD.SelectedValue + ":" + EminuteDD.SelectedValue;

然后转换它

这是按钮点击后的代码:

 act_event add_event = new act_event();
        string start, end;
        DateTime strt_date = new DateTime();
        DateTime end_date = new DateTime();

        add_event.name = name_event.Text;

        start = startEventTB.Text + " " + ShourDD.SelectedValue + ":" + SminuteDD.SelectedValue;
        end = endEventTB.Text + " " + EhourDD.SelectedValue + ":" + EminuteDD.SelectedValue;

        strt_date = Convert.ToDateTime(start); //This is the line that throws the error
        add_event.start = strt_date;



        end_date = Convert.ToDateTime(end);
        add_event.end = end_date;

        add_event.description = des_event.Text;

        add_event.address = loc_event.Text;


        db.add_event(add_event);

然后我明白了:

【问题讨论】:

  • 这就是为什么你使用日期选择器而不是文本...

标签: c# asp.net string datetime datetime-conversion


【解决方案1】:

您最可能遇到的问题与格式问题有关。由于 DateTime 有很多不同的格式化方式,Convert.ToDateTime( ... ) 可能使用的格式与您的hour\minute 格式不同。

尝试使用DateTime.Parse\DateTime.TryParse\DateTime.ParseExact

见:

有关格式化字符串的信息,请参阅 Custom Date and Time Format Strings

【讨论】:

  • 我无法将日期选择器文本转换为日期时间,无论我使用的是 ConvertTo、Parse、ParseExact。它只是抛出错误。这很烦人:\
  • 日期选择器中的字符串文本是什么?
  • 上图中可以看到
  • 字符串31/07/2013在我的环境中被DateTime sample = DateTime.ParseExact("31/07/2013", "dd/MM/yyyy", null);解析
  • DateTime sample = DateTime.ParseExact("31/07/2013 8:15", "dd/MM/yyyy h:m", null); 也可以
【解决方案2】:
  1. 这可能是格式\本地化问题,不同的机器可能被设置为不同的语言环境,并且期望日期的写法不同。

  2. 我认为你给自己惹了不必要的麻烦。为什么首先创建字符串只是为了稍后解析它?做类似的事情不是更容易 -

    date = new DateTime(date.year, date.month, date.day, HH, MM, SS);

来自控件的数据?

【讨论】:

  • 我无法将日期选择器文本转换为日期时间,无论我使用的是 ConvertTo、Parse、ParseExact。它只是抛出错误。这很烦人:\
猜你喜欢
  • 1970-01-01
  • 2011-09-12
  • 2023-01-29
  • 1970-01-01
  • 2013-01-28
  • 2021-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多