C# 跨天过零点后如何求两个时间的差值
t1=DateTime.Parse(dt.Rows[i]["开始时间"].ToString());t2=DateTime.Parse(dt.Rows[i]["结束时间"]...
t1 = DateTime.Parse(dt.Rows[i]["开始时间"].ToString());
t2 = DateTime.Parse(dt.Rows[i]["结束时间"].ToString());
System.TimeSpan ND = t2 - t1;
double mm = ND.Minutes;
如上,问题是当开始时间为23:56:57,结束时间为 0:06:57时,所得差值为负数(-50分钟),应该如何求得时间差为10分钟呢? 展开
t2 = DateTime.Parse(dt.Rows[i]["结束时间"].ToString());
System.TimeSpan ND = t2 - t1;
double mm = ND.Minutes;
如上,问题是当开始时间为23:56:57,结束时间为 0:06:57时,所得差值为负数(-50分钟),应该如何求得时间差为10分钟呢? 展开
1个回答
展开全部
这个问题很可能是由于数据库中“开始时间”和“结束时间”两个字段的日期部分(年月日)相同导致的。如果是的话,解决方法如下:
t1 = DateTime.Parse(dt.Rows[i]["开始时间"].ToString());
t2 = DateTime.Parse(dt.Rows[i]["结束时间"].ToString());
System.TimeSpan ND = t2 - t1;
// 用ND .TotalMinutes获取时间差的分钟总数
// 然后用1440(一天有1440分钟)对这个差值取余
double mm = (1440 + ND .TotalMinutes) % 1440;
// mm 的值 10.0
追问
谢谢~~求教要是再加上秒数呢,最后得到相差多少分多少秒,也用同样的办法么?当秒数大于60时,分钟数加1?如何判断?
追答
string d1 = "2015年7月18日 23:56:57";
DateTime t1 = DateTime.Parse(d1);
string d2 = "2015年7月18日 00:06:56";
DateTime t2 = DateTime.Parse(d2);
// 相差的秒数
double ss = (86400 + ND .TotalSeconds) % 86400;
// 相差:分钟部分
double mm = (int)(ss / 60);
// 相差:秒
ss = (int)(ss % 60);
计算结果为
mm = 9.0
ss = 59.0
及相差9分59秒
----
上面所说的方法虽然可以,但太麻烦了。要彻底解决转日问题,最好在数据库字段上带上日期部分(年月日)。这样可以TimeSpan直接计算出时间差,而且不容易出错!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询