您好我正在尝试制作秒表。 我使用了来自互联网的代码来计算分钟和秒数: 这是代码(工作正常)
public partial class Ingelogd2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
sw = new Stopwatch();
sw.Start();
}
}
private static Stopwatch sw;
protected void tm1_Tick(object sender, EventArgs e)
{
long sec = sw.Elapsed.Seconds;
long min = sw.Elapsed.Minutes;
if (min < 60)
{
if (min < 10)
Henkie.Text = "0" + min;
else
Henkie.Text = min.ToString();
Henkie.Text += " : ";
if (sec < 10)
Henkie.Text += "0" + sec;
else
Henkie.Text += sec.ToString();
}
}
else
{
sw.Stop();
Response.Redirect("Ingelogd2.aspx");
}
}
}
}
我从这段代码得到的结果是例如:00:14(标签“Henkie”上显示14秒后)
现在我已经尝试添加小时数,所以我已经制作了这段代码:
public partial class Ingelogd2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
sw = new Stopwatch();
sw.Start();
}
}
private static Stopwatch sw;
protected void tm1_Tick(object sender, EventArgs e)
{
long sec = sw.Elapsed.Seconds;
long min = sw.Elapsed.Minutes;
long hour = sw.Elapsed.Hours;
long day = sw.Elapsed.Days;
if (day < 1)
{
if (hour < 10)
Henkie.Text = "0" + hour;
else
Henkie.Text = hour.ToString();
Henkie.Text += " : ";
if (min < 10)
Henkie.Text = "0" + min;
else
Henkie.Text = min.ToString();
Henkie.Text += " : ";
if (sec < 10)
Henkie.Text += "0" + sec;
else
Henkie.Text += sec.ToString();
}
else
{
sw.Stop();
Response.Redirect("Ingelogd2.aspx");
}
}
}
}
我想它会显示例如(0小时12分16秒后00:12:16),但我不会工作。它仅在0小时,12分钟,16秒后显示12:16。我不知道为什么这不起作用。有人可以帮助我吗?
答案 0 :(得分:3)
我有一个问题,在你继续阅读实际解决方案之前,我希望你能回答这个问题。
你为什么这样做?我的意思是所有代码。所有这些操作,添加零,所有if-else语句。
真正的问题是为什么简单的复杂化?
现在你的回答。只需显示Elapsed
属性即可。这将在内部使用ToString
格式调用c
,如果存在,将显示hh:mm:ss
可选日期。
如果你想省略,比方说,第一个例子中的小时数你仍然不需要写下所有代码,你只是:
sw.Elapsed.ToString("mm\\:ss")