タスクの時間を追跡する ASP.NET WinForms アプリケーションを作成したいと考えています。タスクをデータベースに追加し、新しいタブで開き、タスクを開始、一時停止、および停止できるように、フォームを作成できる必要があります。完了したら、タスクを完了するのにかかる時間を計算する必要があります。ページで実行されているストップウォッチを表示して、AJAX を介して毎秒更新される時間:分:秒を表示したいと思います。私は既に Web で TimeSpan、DateTime、StopWatch などを調べましたが、自分に合ったものが見つからないようです。スタート ボタンとストップ ボタンを備えた単純なフォームから始めました。開始ボタンの _click イベントは DateTime 変数 'startTime = DateTime.Now' を割り当て、停止ボタンの _click イベントは DateTime 変数 'endTime = DateTime.Now' を割り当てます。次に TimeSpan を使用します ' TimeSpan 'elapsed = (endTime - startTime) を計算します。ラベルを更新して経過時間を表示する場合、経過した秒数だけを取得することを期待していますが、DateTime 文字列全体を取得します。以下は私のコードです:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;
namespace CS_StopWatch
{
public partial class Default : System.Web.UI.Page
{
//public Stopwatch myStopWatch = new Stopwatch();
public DateTime startTime;
public DateTime endTime;
public TimeSpan ts_timeElapsed;
public string s_timeElapsed;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void StartButton_Click(object sender, EventArgs e)
{
//myStopWatch.Start();
startTime = DateTime.Now;
}
protected void StopButton_Click(object sender, EventArgs e)
{
//myStopWatch.Stop();
//ElapsedLabel.Text = "Time Elapsed: " + myStopWatch.Elapsed;
endTime = DateTime.Now;
ts_timeElapsed = (endTime - startTime);
s_timeElapsed = GetElapsedTimeString();
ElapsedLabel.Text = "Time Elapsed: " + s_timeElapsed;
}
public string GetElapsedTimeString()
{
int days = ts_timeElapsed.Days;
double hours = ts_timeElapsed.Hours;
double mins = ts_timeElapsed.Minutes;
double secs = ts_timeElapsed.Seconds;
string x = "";
if (days != 0)
{
x += days.ToString() + ":";
}
if (hours != 0)
{
x += hours.ToString() + ":";
}
if (mins != 0)
{
x += mins.ToString() + ":";
}
if (secs != 0)
{
x += secs.ToString();
}
return x;
}
}
}