c#中添加小时和分钟的差异
Add the difference in hours and minutes in c #
嗨,我必须 运行 使用以下格式的时差总和:
- 开始结束[0]: 08:50
- 开始结束1: 10:30
- 开始结束[2]: 12:30
开始结束[3]: 15:30
结果=(开始结束1-开始结束[0])+(开始结束[3]-开始结束[2])
如何获取 HH:mm 格式的结果值?
C#代码:
String[] HourAndMinute = new String[100];
foreach (DataRow dr in dt.Rows)
{
HourAndMinute[conta] = dr["StartEnd"].ToString();
conta++;
}
conta++;
int n = 0;
for (int i = 0; i < conta / 2; i++)
{
TimeSpan tempoUscita = TimeSpan.Parse(HourAndMinute[i]);
TimeSpan tempoIngresso = TimeSpan.Parse(HourAndMinute[i + 1]);
totalSum = totalSum + (tempoUscita - tempoIngresso);
n++;
}
Totale = "" + totalSum.Hours.ToString().Replace("-", "").ToString() + ":" + totalSum.Minutes.ToString().Replace("-","").ToString();
Sql 查询:
select FORMAT(DataCreazione,'HH:mm') as StartEnd
from Marcatura
where (Stato='Enter' or Stato='Exit')
Table Sql 图片:
TimeSpan totalSum = TimeSpan.Zero;
foreach (DataRow dr in dt.Rows)
{
string[] HourAndMinute = dr["StartEnd"].ToString().Split(); //This String contains 08:50 10:30 ...
TimeSpan tsStart = TimeSpan.Parse(HourAndMinute[0].Trim());
TimeSpan tsEnd = TimeSpan.Parse(HourAndMinute[1].Trim());
totalSum += tsEnd - tsStart;
}
嗯,现在你已经完全改变了问题,第一个 StartEnd
是 08:50 10:30
现在每条记录都包含 08:50
或 10:30
。该数据模型看起来不太好,但是...
TimeSpan totalSum = TimeSpan.Zero;
List<TimeSpan> orderedTimespans = dt.AsEnumerable()
.Select(r => TimeSpan.Parse(r.Field<string>("StartEnd")))
.OrderBy(ts => ts)
.ToList();
for (int index = 0; index < orderedTimespans.Count; index+=2)
{
TimeSpan tsStart = orderedTimespans[index];
TimeSpan tsEnd = orderedTimespans[index + 1];
totalSum += tsEnd - tsStart;
}
由于您将时间条目记录为 DateTime,请按原样阅读这些 (无字符串,无格式)并将它们转换为时间跨度:
DateTime[] startEnd = new DateTime[4];
// Read data from table.
// For demonstration, array is here filled manually with your values:
startEnd[0] = DateTime.Today.AddHours(8).AddMinutes(50);
startEnd[1] = DateTime.Today.AddHours(10).AddMinutes(30);
startEnd[2] = DateTime.Today.AddHours(12).AddMinutes(30);
startEnd[3] = DateTime.Today.AddHours(15).AddMinutes(30);
TimeSpan totalTime = new TimeSpan(0);
// Add/subtract the timespans in pairs.
for (int i = 0; i < 4 ; i += 2)
{
totalTime += startEnd[i + 1].Subtract(startEnd[i]);
}
// Display totalTime as formatted text.
Console.WriteLine(totalTime.ToString("hh':'mm"));
嗨,我必须 运行 使用以下格式的时差总和:
- 开始结束[0]: 08:50
- 开始结束1: 10:30
- 开始结束[2]: 12:30
开始结束[3]: 15:30
结果=(开始结束1-开始结束[0])+(开始结束[3]-开始结束[2])
如何获取 HH:mm 格式的结果值?
C#代码:
String[] HourAndMinute = new String[100];
foreach (DataRow dr in dt.Rows)
{
HourAndMinute[conta] = dr["StartEnd"].ToString();
conta++;
}
conta++;
int n = 0;
for (int i = 0; i < conta / 2; i++)
{
TimeSpan tempoUscita = TimeSpan.Parse(HourAndMinute[i]);
TimeSpan tempoIngresso = TimeSpan.Parse(HourAndMinute[i + 1]);
totalSum = totalSum + (tempoUscita - tempoIngresso);
n++;
}
Totale = "" + totalSum.Hours.ToString().Replace("-", "").ToString() + ":" + totalSum.Minutes.ToString().Replace("-","").ToString();
Sql 查询:
select FORMAT(DataCreazione,'HH:mm') as StartEnd
from Marcatura
where (Stato='Enter' or Stato='Exit')
Table Sql 图片:
TimeSpan totalSum = TimeSpan.Zero;
foreach (DataRow dr in dt.Rows)
{
string[] HourAndMinute = dr["StartEnd"].ToString().Split(); //This String contains 08:50 10:30 ...
TimeSpan tsStart = TimeSpan.Parse(HourAndMinute[0].Trim());
TimeSpan tsEnd = TimeSpan.Parse(HourAndMinute[1].Trim());
totalSum += tsEnd - tsStart;
}
嗯,现在你已经完全改变了问题,第一个 StartEnd
是 08:50 10:30
现在每条记录都包含 08:50
或 10:30
。该数据模型看起来不太好,但是...
TimeSpan totalSum = TimeSpan.Zero;
List<TimeSpan> orderedTimespans = dt.AsEnumerable()
.Select(r => TimeSpan.Parse(r.Field<string>("StartEnd")))
.OrderBy(ts => ts)
.ToList();
for (int index = 0; index < orderedTimespans.Count; index+=2)
{
TimeSpan tsStart = orderedTimespans[index];
TimeSpan tsEnd = orderedTimespans[index + 1];
totalSum += tsEnd - tsStart;
}
由于您将时间条目记录为 DateTime,请按原样阅读这些 (无字符串,无格式)并将它们转换为时间跨度:
DateTime[] startEnd = new DateTime[4];
// Read data from table.
// For demonstration, array is here filled manually with your values:
startEnd[0] = DateTime.Today.AddHours(8).AddMinutes(50);
startEnd[1] = DateTime.Today.AddHours(10).AddMinutes(30);
startEnd[2] = DateTime.Today.AddHours(12).AddMinutes(30);
startEnd[3] = DateTime.Today.AddHours(15).AddMinutes(30);
TimeSpan totalTime = new TimeSpan(0);
// Add/subtract the timespans in pairs.
for (int i = 0; i < 4 ; i += 2)
{
totalTime += startEnd[i + 1].Subtract(startEnd[i]);
}
// Display totalTime as formatted text.
Console.WriteLine(totalTime.ToString("hh':'mm"));