从 ASP.Net 中的文本框值添加小时和分钟 (c#)
Add hours and minutes from textbox values in ASP.Net (c#)
我有多个文本框以 HH:MM 格式保存计算的小时和分钟。
在我页面的底部,我需要一个最终文本框来计算这些小时和分钟的总和,是否应该使用 Timespan 来完成?
为了澄清(我知道我没有在下面的例子中从字符串转换,这只是为了展示我需要做什么)
txtTotalTime.Text = txtTimeTaken1.Text + txtTimeTaken2.Text + txtTimeTaken3.Text
假设这三个时间中的每一个都有 TimeSpan 对象,您可以执行如下操作:
...
TimeSpan total = new TimeSpan(0);
total.Add(timeTaken1);
total.Add(timeTaken2);
total.Add(timeTaken3);
...
或者,如果您没有其他三个时间的 TimeSpan 对象,但只有它们的小时和分钟(很明显,您可以将它们从 String 转换为整数):
...
TimeSpan total = new TimeSpan(0);
total.Hours=hoursTimeTaken1+hoursTimeTaken2+hoursTimeTaken3
total.Minutes=minutesTimeTaken1+minutesTimeTaken2+minutesTimeTaken3
...
您可以像这样使用 TimeSpan:
TimeSpan timeSpan = TimeSpan.Parse(txtTimeTaken1.Text) + TimeSpan.Parse(txtTimeTaken2.Text) + TimeSpan.Parse(txtTimeTaken3.Text);
txtTotalTime.Text = string.Format("{0:00}:{1:00}", timeSpan.Hours, timeSpan.Minutes);
使用TimeSpan.Parse to parse your strings into TimeSpans, sum all of them and then format them back to HH:MM string using this方法。
如果总小时数加起来超过 24 小时,TimeSpan 将增加一天。这应该可以解决该问题,即 12 小时加 13 小时
public void AddSpans()
{
textBox1.Text = "12:31";
textBox2.Text = "13:40";
string[] splitArray1 = textBox1.Text.ToString().Split(':');
string[] splitArray2 = textBox2.Text.ToString().Split(':');
int hr1, hr2, m1, m2;
if ((int.TryParse(splitArray1[0], out hr1)) &&
(int.TryParse(splitArray1[1], out m1)) &&
(int.TryParse(splitArray2[0], out hr2)) &&
(int.TryParse(splitArray2[1], out m2)))
{
TimeSpan ts1 = new TimeSpan(hr1, m1, 0);
TimeSpan ts2 = new TimeSpan(hr2, m2, 0);
TimeSpan ts3 = ts1.Add(ts2);
int totHrsFromDays = ts3.Days * 24;
textBox3.Text = (totHrsFromDays + ts3.Hours) + ":" + ts3.Minutes;
}
else
{
// invalid format HH:MM
}
我有多个文本框以 HH:MM 格式保存计算的小时和分钟。 在我页面的底部,我需要一个最终文本框来计算这些小时和分钟的总和,是否应该使用 Timespan 来完成?
为了澄清(我知道我没有在下面的例子中从字符串转换,这只是为了展示我需要做什么)
txtTotalTime.Text = txtTimeTaken1.Text + txtTimeTaken2.Text + txtTimeTaken3.Text
假设这三个时间中的每一个都有 TimeSpan 对象,您可以执行如下操作:
...
TimeSpan total = new TimeSpan(0);
total.Add(timeTaken1);
total.Add(timeTaken2);
total.Add(timeTaken3);
...
或者,如果您没有其他三个时间的 TimeSpan 对象,但只有它们的小时和分钟(很明显,您可以将它们从 String 转换为整数):
...
TimeSpan total = new TimeSpan(0);
total.Hours=hoursTimeTaken1+hoursTimeTaken2+hoursTimeTaken3
total.Minutes=minutesTimeTaken1+minutesTimeTaken2+minutesTimeTaken3
...
您可以像这样使用 TimeSpan:
TimeSpan timeSpan = TimeSpan.Parse(txtTimeTaken1.Text) + TimeSpan.Parse(txtTimeTaken2.Text) + TimeSpan.Parse(txtTimeTaken3.Text);
txtTotalTime.Text = string.Format("{0:00}:{1:00}", timeSpan.Hours, timeSpan.Minutes);
使用TimeSpan.Parse to parse your strings into TimeSpans, sum all of them and then format them back to HH:MM string using this方法。
如果总小时数加起来超过 24 小时,TimeSpan 将增加一天。这应该可以解决该问题,即 12 小时加 13 小时
public void AddSpans()
{
textBox1.Text = "12:31";
textBox2.Text = "13:40";
string[] splitArray1 = textBox1.Text.ToString().Split(':');
string[] splitArray2 = textBox2.Text.ToString().Split(':');
int hr1, hr2, m1, m2;
if ((int.TryParse(splitArray1[0], out hr1)) &&
(int.TryParse(splitArray1[1], out m1)) &&
(int.TryParse(splitArray2[0], out hr2)) &&
(int.TryParse(splitArray2[1], out m2)))
{
TimeSpan ts1 = new TimeSpan(hr1, m1, 0);
TimeSpan ts2 = new TimeSpan(hr2, m2, 0);
TimeSpan ts3 = ts1.Add(ts2);
int totHrsFromDays = ts3.Days * 24;
textBox3.Text = (totHrsFromDays + ts3.Hours) + ":" + ts3.Minutes;
}
else
{
// invalid format HH:MM
}