3

有没有一种简单的方法将时间 (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" />
4

3 回答 3

5

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

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

double totalHours = new TimeSpan(endHour.Hour, endHour.Minute, 0).TotalHours;
于 2010-05-05T12:17:37.553 回答
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 来剪切字符串,然后单独计算每个位(分钟和秒),然后将结果输出到第二个文本框或标签。

于 2010-05-05T12:26:12.857 回答
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;
于 2010-05-05T12:07:50.807 回答