【问题标题】:c# Winform DateTime Show Time only in Datagridc# Winform DateTime 仅在 Datagrid 中显示时间
【发布时间】:2016-12-03 15:24:55
【问题描述】:

您好,感谢您的宝贵时间

我有一个填充到 DataGrid 的 DateTime Picker。我遇到的问题是我只想要时间,首选(军事时间)。我试过 .ToString .TimeOfDay 等等。我认为最后一行代码(today.year,month,day) 是问题,但不知道如何更正。

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

【问题讨论】:

标签: c#


【解决方案1】:

试试这个。现在,您是否在不同的行上进行字符串转换,以便更好地识别您在第一个谎言中是否有错误。

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 可能已经基于今天,但我不确定。

========编辑=====

你需要知道的事情。

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

让我们删除对您的问题没有影响的那 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;

【讨论】:

  • 是的,我只想显示时间,但不知道要添加到哪一行。我是新手。谢谢
  • 我已添加 .Value 、 .Today 并设置为 Ture。它仍然在数据网格中返回 12/3/16 8:28。
  • 得到了很棒的信息,谢谢
【解决方案2】:

使用dateTimePicker.ValueDateTime.TimeofDay

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

【讨论】:

  • 值没有扩展方法,无法理解它很难仅在 DataGrid 中显示时间
猜你喜欢
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多