在.net中将时间转换为小数

时间:2010-05-05 12:01:21

标签: 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" TargetControlID="time" MaskType="Time" />

3 个答案:

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