带有自定义格式的DateTimePicker控件,如何设置时间值?

DateTimePicker control with a custom format, how to set the time value?

我有一个名为“dtpickStartTime”的 DateTimePicker 控件,它的自定义格式为 'HH mm' (dtpickStartTime.CustomFormat = "HH mm")。我用它 select 一个工作正常的时间(我从它那里得到时间,以那种格式)。然而,我正在努力设置时间。

我正在从一组带有标签的控件中设置时间 PanelField(i).lblStartTime.Text,有点复杂,但这意味着我试图设置的值是“00 00”或类似的值,它在该自定义格式

但是好像不行

JobAddingForm.dtpickStartTime.Value = CDate(PanelField(i).lblStartTime.Text)

System.InvalidCastException: 'Conversion from string "14 20" to type 'Date' is not valid.'

有谁知道如何以编程方式设置时间? 我试过

JobAddingForm.dtpickStartTime.Value = New DateTime(0, 0, 0, PanelField(i).lblStartTime.Text, 0, 0)

但要做到这一点,您需要将其设置为 (0, 0, 0, 14, 20, 0) 并且标签包含“14 20”的值,因此它看起来像 (0, 0, 0, 14 20, 0, 0)

我也不确定要搜索什么来解决这个问题,所以我问这个问题,我希望我已经解释得足够好,如果需要提供更多信息,我可以做到。感谢阅读:-)

如果您需要将 "non-standard" 字符串转换为 DateTime,您应该使用 ParseExact or TryParseExact 而不是 CDate,它们都可以获得一个指定输入格式的参数细绳。在你的情况下,这应该有效:

JobAddingForm.dtpickStartTime.Value = DateTime.ParseExact(PanelField(i).lblStartTime.Text, "HH mm", Globalization.CultureInfo.InvariantCulture)