3

時間(hh:mm)を10進値として表示する簡単な方法はありますか?たとえば、01:08は1,13になります。

マスク形式が「99:99」の時間としてasp:textboxマスク(ajax)があります。このボックスの横に、入力した値を10進数で表示する必要があります。

<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

まず、 DateTimeよりもTimeSpanを使用する方が適切な場合があります。したがって、あなたの例では、これは:

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

正しい結果が得られます。mafterは、その計算を10進数に強制60します。

このC#はサーバー側で実行されるため、テキストボックスのオンブラーに直接フックすることはできません。クライアント側でこれを実行する必要がある場合は、ajaxコールバックを使用して評価するか、javascriptを使用して文字列を切り取り、各ビット(分と秒)を個別に計算して、結果を2番目のテキストボックスに出力する必要があります。ラベル。

于 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 に答える