日期时间格式错误
本文关键字:错误 格式 时间 日期 | 更新日期: 2023-09-27 18:26:39
在这里,我将StartDate
和EndDate
作为日期时间和StartTime
,EndTime
作为时间。我需要从StartDate
和EndDate
更改时间部分。然后添加StartTime
和EndTime
。这是我的尝试。但在最后一部分,它向我展示了错误。
错误是:字符串未被识别为有效的日期时间
string StartTime = "";
string EndTime = "";
DateTime StartDate = Convert.ToDateTime(RadDatePickerStart.SelectedDate);
DateTime EndDate = Convert.ToDateTime(RadDatePickerEnd.SelectedDate);
if (RadTimePickerStart.SelectedDate != null)
StartTime = RadTimePickerStart.SelectedDate.Value.ToString("HH:mm");
if (RadTimePickerEnd.SelectedDate != null)
EndTime = RadTimePickerEnd.SelectedDate.Value.ToString("HH:mm");
DateTime NewStartDate = Convert.ToDateTime(StartDate + " " + StartTime);<-- In here shows the error
DateTime NewEndDate = Convert.ToDateTime(EndDate + " " + EndTime);
实际上我需要将日期添加到时间,在这里我需要更改时间部分StartDate
并为其添加开始时间。
在 C# 中,+ 运算符对于大多数系统类型都是重载的,只需将它们相加即可。因此,您还应该只从选取器中获取 Date 对象,而不是将其转换为字符串。
编辑:现在,最终的日期时间将是添加来自RadDatePickers的日期和来自RadTimePickers的时间的结果。
DateTime StartDate = Convert.ToDateTime(RadDatePickerStart.SelectedDate);
DateTime EndDate = Convert.ToDateTime(RadDatePickerEnd.SelectedDate);
TimeSpan StartTime, EndTime;
if (RadTimePickerStart.SelectedDate != null)
StartTime = RadTimePickerStart.SelectedDate.Value.TimeOfDay;
if (RadTimePickerEnd.SelectedDate != null)
EndTime = RadTimePickerEnd.SelectedDate.Value.TimeOfDay;
RadDatePickerStart.SelectedDate = StartDate + StartTime;
RadDatePickerEnd.SelectedDate = EndDate + EndTime;
编辑:我不知道如何设置选择器的日期时间,您可能需要调整代码的那部分。
Convert.ToDateTime
而不是使用 DateTime.TryParseExact
并使string
连接日期和时间稍后转换为日期。
此示例代码片段将帮助您,
DateTime dateasof;
bool result = DateTime.TryParseExact("08/06/2013 13:50", "MM/dd/yyyy HH:MM", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateasof);
if (result)
return dateasof;
请尝试以下操作
DateTime StartDate = RadDatePickerStart.SelectedDate.Value;
DateTime EndDate = RadDatePickerEnd.SelectedDate.Value;
if (RadTimePickerStart.SelectedDate != null)
StartDate = StartDate.Date.Add(RadTimePickerStart.SelectedDate.Value.TimeOfDay);
if (RadTimePickerEnd.SelectedDate != null)
EndDate = EndDate.Date.Add(RadTimePickerEnd.SelectedDate.Value.TimeOfDay);
我想主要问题出现在你连接的地方
DateTime NewStartDate = Convert.ToDateTime(StartDate + " " + StartTime);<-- In here shows the error
在这里,StartDate
已经有一个默认为午夜的时间组件,并且您正在为此附加另一个时间组件,因此不会对其进行解析
它会变成类似08/06/2013 12:00:00 AM 05:00:00
您需要提供更多详细信息,因为您的目的到底是什么
您可以使用DateTime Result = StartDate + StartTime;// StartTime as timespan
(如果要将StartTime
解析为 DateTime
则使用 TimeOfDay
属性获取TimeSpan
(或
DateTime Result = StartDate.Add(StartTime);