试试这个。现在,您是否在不同的行上进行字符串转换,以便更好地识别您在第一个谎言中是否有错误。
var calculated_start_time = new DateTime(today.Year, today.Month,
today.Day, Convert.ToInt16(start_time_array[0]),
Convert.ToInt16(start_time_array[1]), 00);
string time = calculated_start_time.ToString("HH:mm");
但目前还不清楚您希望完成什么。如果我理解正确,以下是您可能要考虑的选项。将日期时间选择器设置为仅显示时间https://msdn.microsoft.com/en-us/library/ms229631.aspx
timePicker.Format = DateTimePickerFormat.Time;
那么我认为以下应该可以工作,但我现在无法测试。
string dateTimeYouWant = DateTime.Today.Add(DateFromTimePicker.TimeOfDay);
您甚至可能不需要做任何事情,因为 DateFromTimePicker 可能已经基于今天,但我不确定。
========编辑=====
你需要知道的事情。
- 要从 dateTimePicker 获取值,您应该使用 .Value 而不是 .Text,.Value 将返回 DateTime,这就是您想要使用的。
- 要获得“今天”,您应该使用 DateTime.Today 而不是 DateTime.Now。 DateTime.Today 将分钟、小时等设置为零。
- 如果您是新手,我会避免使用 var 并给出真实类型。
现在让我们看看你的代码
var start_time = dateTimePicker1.Text;
var start_time_array = start_time.Split(':');
var today = DateTime.Now;
var trailer_count = Convert.ToInt32(tbTrailer_Needed.Text);
var minutes_apart = Convert.ToDouble(tbTime_Between.Text);
var calculated_start_time = new DateTime(today.Year, today.Month,
today.Day, Convert.ToInt16(start_time_array[0]),
Convert.ToInt16(start_time_array[1]), 00);
让我们删除对您的问题没有影响的那 2 行
var start_time = dateTimePicker1.Text;
var start_time_array = start_time.Split(':');
var today = DateTime.Now;
var calculated_start_time = new DateTime(today.Year, today.Month,
today.Day, Convert.ToInt16(start_time_array[0]),
Convert.ToInt16(start_time_array[1]), 00);
你想用这个替换所有代码:
DateTime calculated_start_time = DateTime.Today.Add(dateTimePicker1.Value.TimeOfDay);
为了让它更好地配置你的 datetimepicker(在表单或属性编辑器的初始化处),这样你的用户就不能选择日期而只能选择时间:
dateTimePicker1.Format = DateTimePickerFormat.Time;
dateTimePicker1.ShowUpDown = true;