从文本框值中添加小时和分钟.Net (c#)
本文关键字:Net 分钟 小时 文本 添加 | 更新日期: 2023-09-27 18:14:04
我有多个文本框保存HH:MM格式的计算小时和分钟。在我的页面底部,我需要一个最后的文本框来合计这些小时和分钟,这应该使用时间跨度吗?
澄清一下(我知道在下面的例子中我没有从字符串转换,这只是为了显示我需要做什么)
txtTotalTime.Text = txtTimeTaken1.Text + txtTimeTaken2.Text + txtTimeTaken3.Text
你可以这样使用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);
使用时间间隔。解析将您的字符串解析为TimeSpans,将它们全部相加,然后使用此方法将它们格式化为HH:MM字符串。
假设这三次您都有TimeSpan-objects,您可以这样做:
...
TimeSpan total = new TimeSpan(0);
total.Add(timeTaken1);
total.Add(timeTaken2);
total.Add(timeTaken3);
...
或者如果你没有其他三个时间的timespan -object,你可以把小时和分钟分别加起来,但它们的小时和分钟(显然你有,你可以把它们从字符串转换成整数):
...
TimeSpan total = new TimeSpan(0);
total.Hours=hoursTimeTaken1+hoursTimeTaken2+hoursTimeTaken3
total.Minutes=minutesTimeTaken1+minutesTimeTaken2+minutesTimeTaken3
...
如果总小时数超过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
}