有一种简单的方法可以将时间(hh:mm)显示为十进制值吗? 例如,01:08应该变成1,13。
我有一个asp:textbox蒙面(ajax)作为时间,掩码格式为“99:99”。在此框旁边,我需要将输入的值显示为十进制。
<asp:TextBox ID="time" runat="server" /> hh:mm ([time in decimal format])
<ajaxToolkit:MaskedEditExtender runat="server" Mask="99:99" TargetControlID="time" MaskType="Time" />
答案 0 :(得分:5)
您可以使用TimeSpan的TotalHours属性,如下所示:
DateTime endHour = new DateTime(2010, 1, 2, 5, 30, 0);
double totalHours = new TimeSpan(endHour.Hour, endHour.Minute, 0).TotalHours;
答案 1 :(得分:1)
首先,您可能会发现使用 TimeSpan 而不是 DateTime 更合适。所以对于你的例子,这个:
TimeSpan t = new TimeSpan(0, 1, 8);
decimal d = t.Minutes + (t.Seconds / 60m);
Console.WriteLine(d.ToString());
产生正确的结果。 m
之后的60
强制计算为十进制。
您无法将此C#直接挂接到文本框的onblur,因为它运行服务器端。如果你需要这个来运行客户端,你将不得不使用ajax回调来评估它,或者使用javascript来剪切字符串,然后单独计算每个位(分钟和秒),然后将结果输出到第二个文本框或标签
答案 2 :(得分:0)
double decimalTime = DateTime.Now.Hour + (double)DateTime.Now.Minute/60
编辑:更好的方式,使用GenEric的TimeSpan
想法:
double hours = new TimeSpan(DateTime.Now.Hour,
DateTime.Now.Minute,
0).TotalHours;