Asp.net 将时间转换为.net中的小数

Asp.net 将时间转换为.net中的小数,asp.net,decimal,maskededitextender,Asp.net,Decimal,Maskededitextender,有没有一种简单的方法将时间(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" Tar

有没有一种简单的方法将时间(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" />
hh:mm([十进制格式的时间])
编辑:更好的方法,使用通用的
TimeSpan
idea:

double hours = new TimeSpan(DateTime.Now.Hour, 
                            DateTime.Now.Minute, 
                            0).TotalHours;

您可以使用TimeSpan的TotalHours属性,如下所示:

DateTime endHour = new DateTime(2010, 1, 2, 5, 30, 0);

double totalHours = new TimeSpan(endHour.Hour, endHour.Minute, 0).TotalHours;

首先,您可能会发现使用TimeSpan比使用DateTime更合适。以你的例子来说,这是:

TimeSpan t = new TimeSpan(0, 1, 8);
decimal d = t.Minutes + (t.Seconds / 60m);
Console.WriteLine(d.ToString());
产生正确的结果。
60
后面的
m
强制该计算为十进制

<asp:TextBox ID="time" runat="server" /> hh:mm ([time in decimal format])
<ajaxToolkit:MaskedEditExtender runat="server" Mask="99:99" TargetControlID="time" MaskType="Time" />

您不能将此C#直接挂接到文本框的onblur,因为它运行在服务器端。如果您需要这个来运行客户端,那么您必须使用ajax回调来计算它,或者使用javascript将字符串切分,然后分别计算每个位(分和秒),然后将结果输出到第二个文本框或标签。

谢谢,所以唯一的方法是拆分值并手动计算?我认为是这样;这是一个奇怪的请求,我看不出有更简单的内置方式。好的,有没有一个事件我可以将这个计算挂接到后面的代码中,比如当用户离开文本框时(onblur)?嗯,它似乎不是onblur事件,但它是客户端,而不是服务器端,所以它不是你的智能感知——你需要自己手动添加它:Textbox.Attributes.add(“onblur”,“myjavascript”);