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

zxlwwiss  于 2023-02-06  发布在  .NET
关注(0)|答案(4)|浏览(185)

有没有一种简单的方法可以将时间(hh:mm)表示为十进制值?例如,01:08应该变为1,13。
我有一个asp:textbox用掩码格式“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" />
gj3fmq9x

gj3fmq9x1#

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

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

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

6tdlim6h2#

首先,您可能会发现使用 TimeSpan 比使用 DateTime 更合适。因此,对于您的示例,如下所示:

TimeSpan t = new TimeSpan(0, 1, 8);
decimal d = t.Minutes + (t.Seconds / 60m);
Console.WriteLine(d.ToString());

产生正确的结果。60后面的m强制计算为十进制。
你不能把这个C#直接挂接到文本框的onblur上,因为它运行在服务器端,如果你需要它来运行客户端,你必须使用 AJAX 回调函数来计算它,或者使用javascript来剪切字符串,然后分别计算每一位(分和秒),然后把结果输出到第二个文本框或标签。

fcg9iug3

fcg9iug33#

double decimalTime = DateTime.Now.Hour + (double)DateTime.Now.Minute/60

编辑:更好的方法,使用GenEric的TimeSpan思想:

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

bq9c1y664#

(CDate("01:08").TimeOfDay.TotalHours).ToString("N2"))

相关问题