私の TimeIn.aspx ファイルでは、次のコードで時計を表示しています。
<div>
<div>
<asp:ScriptManager runat="server" ID="ScriptManager1" />
<br />
<asp:UpdatePanel runat="server" ID="UpdatePanel1">
<ContentTemplate>
<asp:Label runat="server" ID="Label4" Text="Current Time: "/>
<asp:Label runat="server" ID="Label2" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
</asp:UpdatePanel>
<asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="1000" />
</div>
<br />
<br />
<asp:Button ID="Button1" runat="server" Text="Check In" OnClick="CheckIn" />
</div>
時計は正常に動作します。次に、TimeIn.aspx.cs ファイルに、CheckIn メソッドを記述しました。
protected void CheckIn(object sender, EventArgs e)
{
TimeSpan currtime = TimeSpan.Parse(Label2.Text);
int eid = Convert.ToInt32(Session["EID"]);
DBClient = new DBConnection();
DBClient.CheckIn(eid, currtime, DateTime.Now.Date.ToString());
Response.Redirect("ECheckin.aspx");
}
データベースでは、CheckinTime
列のデータ型は ですTime(7)
。
CheckIn イベントが発生すると、TimeSpan.Parse の最初の行で例外が発生します。これは、Label2.Text に時間形式 (AM/PM) が追加された時間が含まれているためです。
Label2.Text のサンプル値は次のとおりです。1:41:28 PM
この状況に対処する最善の解決策は何ですか? Time
後で時間フィールドで計算を実行する必要があるため、SQLサーバーでデータ型を使用したいと思っています。