转换DateTime格式

时间:2015-06-11 11:43:00

标签: c# datetime

我有两个字符串变量。第一个来自标签(此日期将根据datetimepicker进行更改)。第二个是在组合框中选择的时间。格式在此示例中 -

lblActualDate.Text - 11 June 2015
comboStartTime.Text - 12.00AM

我收到的错误是字符串格式不正确无法转换为日期时间。

我的目标是使用表单中的值创建一个实例 这是我的代码 -

private void btnSave_Click(object sender, EventArgs e)
    {
        string dateString = lblActualDate.Text + " " + comboStartTime.SelectedItem;

        DateTime startTime = DateTime.ParseExact(dateString, "dd MMMM yyyy hh.mmtt", CultureInfo.InvariantCulture);

        int length = int.Parse(comboLength.SelectedText);
        string description = txtBoxSubject.Text;
        string location = txtBoxLocation.Text;

        Appointment newAppointment = new Appointment(startTime, length, description, location);
        Appointments appointments = new Appointments();

        appointments.Add(newAppointment);
        appointments.Save();

        txtBoxLocation.Clear();
        txtBoxSubject.Clear();
        Dispose();
    }

2 个答案:

答案 0 :(得分:4)

Convert.ToDateTime使用standard date and time formatsCurrentCulture。这意味着您的字符串格式与这些格式之一不匹配。

您可以使用custom date and time formats来解析字符串,如;

string s = "11 June 201512.00AM";
DateTime startTime = DateTime.ParseExact(s, "dd MMMM yyyyhh.mmtt", 
                                            CultureInfo.InvariantCulture);

还要考虑在日期和时间部分之间加一个空格。

答案 1 :(得分:0)

您很可能在日期/时间的小时部分中获得了一位数的组合,以及其他两位数的组合。< / p>

您可以通过构建允许格式数组并将其传递给ParseExact来允许所有可能性:

string[] formats = { "d MMMM yyyy h.mmtt", "d MMMM yyyy hh.mmtt", "dd MMMM yyyy h.mmtt", "dd MMMM yyyy hh.mmtt" };
DateTime startTime = DateTime.ParseExact(dateString, formats, CultureInfo.InvariantCulture, DateTimeStyles.None);