我有两个字符串变量。第一个来自标签(此日期将根据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();
}
答案 0 :(得分:4)
Convert.ToDateTime
使用standard date and time formats的CurrentCulture
。这意味着您的字符串格式与这些格式之一不匹配。
您可以使用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);