我有一个数据表,其中有一个总有效时间:Total
列,我想根据最短和最长的时间进行过滤,例如仅显示00:02:00和00:30:00之间的活动时间。 “我的存储过程”可以使用这些START和END时间进行过滤。
在我的WPF应用程序中,我有一个文本框,并希望使用该文本框过滤所述表格。
(请注意,这些时间通常不是一天的时间,我可能会超过24小时。)
我发现我需要将文本框字符串转换为DateTime,但是由于我对数据库和WPF还是很陌生,因此我不确定如何执行此操作。 在xaml中,我尝试使用:
<TextBox x:Name="Activefrom"
Text="{Binding Path=TotalStart, StringFormat=' HH:mm:ss '}"/>
在后面的代码中,使用以下命令转换字符串:
DateTime dateTimeStart = DateTime.ParseExact(Activefrom.Text, "HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture);
但是我得到了错误:
System.FormatException: 'String was not recognized as a valid DateTime.'
由于时间已超过24小时,所以我不确定是否应该使用DATETIME
,但无论如何我都尝试过,因为在这种情况下,表格不会超过24小时。
如何将文本框绑定为Time
,这样我才能使用SP来仅按时间过滤数据表
答案 0 :(得分:2)
听起来像您应该看看TimeSpan结构而不是DateTime。另外,我可能会将输入分为一个小时数的文本框和一个分钟数的文本框(取决于数据持续时间的范围)。
答案 1 :(得分:0)
从TextBox中读取值:
然后尝试隐瞒DateTime
,然后Time
隐瞒TextBox
的价值:
string s = Activefrom.Text; // "22/11/2010 07:00:00 AM";
var dt = DateTime.Parse(s);
var time = dt.ToString("HH:mm:ss");
输出:
07:00:00 // If TextBox has the following value: "22/11/2010 07:00:00 AM";