日期时间格式错误

本文关键字:错误 格式 时间 日期 | 更新日期: 2023-09-27 18:26:39

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

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

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