0

在这里,我将StartDate&EndDate作为日期时间 &作为时间。我需要从和更改时间部分。然后添加&到它。这是我的尝试。但在最后一部分,它向我显示了错误。StartTimeEndTimeStartDateEndDateStartTimeEndTime

错误是:字符串未被识别为有效的日期时间

            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并添加开始时间。

4

4 回答 4

2

在 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;

编辑:我不知道如何设置你的选择器的 DateTime,你可能需要调整那部分代码。

于 2013-08-06T11:27:57.843 回答
1

不要使用Convert.ToDateTime而不是使用DateTime.TryParseExact,并且将string连接日期和时间的 as 转换为日期。

此示例代码段将帮助您,

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;
于 2013-08-06T11:36:00.573 回答
1

试试下面

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);
于 2013-08-06T11:43:14.823 回答
0

我想主要问题出在你连接的地方

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

(如果您正在解析StartTimeDateTime则使用该TimeOfDay属性来获取TimeSpan)或

DateTime Result = StartDate.Add(StartTime);

于 2013-08-06T11:43:38.450 回答