DatePicker的字符串到日期时间转换问题

时间:2013-10-22 09:33:40

标签: c# datetime datetimepicker datetime-format

我正在从元素中的XML配置文件中读取字符串,然后将它们转换为日期时间以进入日期时间选择器控件。

XML文件中的值为:

<config>
  <Triggers>
    <CalendarTrigger>
      <Start>2012-07-02T18:00:00</Start>
      <Next>2013-10-22T10:40:00</Next>
      <Last>2013-10-01T18:00:00</Last>
      <Result>Success</Result>
      <Enabled>true</Enabled>
      <ScheduleByDay>
        ... and so on...

我使用以下代码将字符串值转换为datetimepicker控件的日期:

CalendarTrigger[0] = (result.Element("Next").Value != "") ? Convert.ToDateTime(result.Element("Next").Value).ToString("dd/MM/yyyy HH:mm:ss") : DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
dScanDate.Value = Convert.ToDateTime(CalendarTrigger[0]);
dScanTime.Value = Convert.ToDateTime(CalendarTrigger[0]);

不幸的是,即使代码正确地将值读入CalendarTrigger[0](CalendarTrigger [0] =“22/10/2013 10:40:00”),我得到一个字符串未被识别为有效的DateTime。错误。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

也许,尝试为DateTimePicker设置自定义格式:

dateTimePicker.CustomFormat = "dd/MM/yyyy HH:mm:ss";
dateTimePicker.Format = DateTimePickerFormat.Custom;

答案 1 :(得分:1)

尝试

string timeString = "23/10/2013 10:40:00";
IFormatProvider culture = new CultureInfo("en-US", true);
DateTime dateVal = DateTime.ParseExact(timeString, "dd/MM/yyyy HH:mm:ss", culture);

或仅使用InvariantCulture

string timeString = "23/10/2013 10:40:00"
DateTime dateVal = DateTime.ParseExact(timeString, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);

答案 2 :(得分:0)

我找到了答案,我使用了错误的日期时间转换格式

应该是

CalendarTrigger[0] = (result.Element("Next").Value != "") ? Convert.ToDateTime(result.Element("Next").Value).ToString("MM/dd/yyyy HH:mm:ss") :DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss");
相关问题