C#Winform DateTime仅在DataGrid中显示时间



你好,谢谢你的时间

我有一个填充到datagrid的DateTime选择器。我遇到的问题是我只想要时间,首选(军事时间)。我已经尝试了.tostring .timodday等。我认为最后一行的代码(今天。年,月,一天)是问题,但不知道该如何纠正。

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

尝试一下。现在,您是否在其他行上将转换字符串转换以更好地识别您在第一个谎言中是否有错误。

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

但尚不清楚您要完成的工作。如果我正确理解以下内容,则可能需要考虑的一个选项。将DateTime选择器设置为仅显示时间https://msdn.microsoft.com/en-us/library/ms229631.aspx

timePicker.Format = DateTimePickerFormat.Time;

然后我认为以下内容应该有效,但我现在无法进行测试。

string dateTimeYouWant = DateTime.Today.Add(DateFromTimePicker.TimeOfDay);

您甚至可能不必做任何事情,因为从今天开始的dateTimePicker可能已经基于今天,但我不确定。

==================

您需要知道的事情。

  1. 要从DateTimePicker获取值。您应该使用.Value而不是.TEXT,VALUE将返回DateTime,这就是您想要使用的。
  2. 要获得"今天",您应该使用dateTime.today而不是dateTime.now。dateTime.today将将分钟,小时等设置为零。
    1. 如果您是新手,我会避免使用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);

让我们删除对您的问题没有影响的两条线

    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;

使用dateTimePicker.ValueDateTime.TimeofDay

var calculated_start_time = DateTime.Today + dateTimePicker1.Value.TimeofDay;

最新更新