0

私の 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サーバーでデータ型を使用したいと思っています。

4

2 に答える 2

3

Timespan は基本的に 2 つの時間の差です。

または、ストップウォッチの値が時計の開始時と停止時からの経過時間であるストップウォッチと言えます。

AM、PMとは関係ありません。

Timespan = Date1 - Date2

あなたが得ているエラーはFormatExceptionになると思います

ラベル テキストの形式がDateTime、AM/PM の理由です。

Timespan の代わりにDateTimeインスタンスを使用してみてください

お気に入り

DateTime currtime = DateTime.Parse(Label2.Text);
于 2012-06-06T08:48:35.747 に答える
0

以下のようにタイムスパンをdatetimeに追加できます

  TimeSpan timespan = new TimeSpan(03,00,00);
    DateTime time = DateTime.Today.Add(timespan);
    string displayTime = time.ToString("hh:mm tt");

03,00,00 の代わりに、 timespan 変数を直接渡すことができます

于 2014-07-18T01:48:54.930 に答える