WPF:如何仅从文本框中获取时间?

时间:2019-01-29 14:59:20

标签: c# sql-server wpf datetime textbox

我有一个数据表,其中有一个总有效时间: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来仅按时间过滤数据表

2 个答案:

答案 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";