2017-07-14 108 views
0

我正在计算两次之间的差异,我得到的负值如登录时间是“10-07-2017 09:28:00”,我正在计算与“09 :20:00“,我得到”-3.23:52:00“......我做错了什么?这是我的表...计算日期时间差只获取时间期限

https://drive.google.com/file/d/0B2VzHPQzJdpmaXAxWG9KZ1o2U00/view

  string Logintime = e.Row.Cells[2].Text; 
      string Logoutime = e.Row.Cells[3].Text; 
      DateTime Logintimedt = Convert.ToDateTime(Logintime); 
      DateTime Logoutimedt = Convert.ToDateTime(Logoutime); 
      DateTime today = DateTime.Today.AddHours(09).AddMinutes(20).AddSeconds(00); 
      TimeSpan diff = (Logoutimedt - Logintimedt); 
      TimeSpan delay = today-Logintimedt; 
+0

瓦在负值的错误?如果你计算'“10-07-2017 09:28:00” - “14-07-2017 09:20:00”'否定结果是正确的! – Dmitry

+0

您确定'Logoutime'时间设置正确且不等于'DateTime.MinValue'。你能显示Logoutime变量吗? – Dmitry

+0

你能提供Logintime,Logouttime的价值吗? –

回答

0

如果你需要时间差,利用DateTime.TimeOfDay

TimeSpan diff = Logoutimedt.TimeOfDay - Logintimedt.TimeOfDay; 
TimeSpan delay = Logintimedt.TimeOfDay - today.TimeOfDay; 

https://dotnetfiddle.net/9KKBfz

-1

试试这个

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     string Logintime = "07-10-2017 09:28:00"; 
     string Logoutime = "07-10-2017 17:16:22 "; 
     DateTime Logintimedt = Convert.ToDateTime(Logintime); 
     DateTime Logoutimedt = Convert.ToDateTime(Logoutime); 
     DateTime today = new DateTime(Logintimedt.Year, Logintimedt.Month, Logintimedt.Day, 9, 20, 00); 
     TimeSpan diff = (Logoutimedt - Logintimedt); 
     TimeSpan delay = Logintimedt - today; 

     Console.WriteLine(diff); 
     Console.WriteLine(delay); 
    } 
}