如何在C#中获取不同日期的总小时数
How to get the total hours with different dates in C#
这是我现在的问题,我想获得工作的总时数和分钟数。
来自 jan 的例子。 2017 年 11 月 22:00 至 2017 年 1 月 12 日 7:00。
到目前为止,我只有在结束日期不变时才有效
DateTime pin = today, pout = DateTime.Parse(empTime);
TimeSpan spanMe = pout.Subtract(pin);
spanMe.Hours
spanMe.Minutes
它给了我负数。
如果你知道最晚的日期,你需要相应地安排。如果不是,则不能乘以-1:
double GetHouers(DateTime one, DateTime another)
{
var diff = (one - another).TotalHours;
return diff > 0 ? diff : diff * -1;
}
您可以从一个 DateTime 对象中减去另一个,然后使用 DateTime class 的 .TotalHours
属性 来获取小时数。它会给你一个代表总小时数的双精度值。
DateTime pin = today, pout = DateTime.Parse(empTime);
double hours = (pout - pin).TotalHours;
it gives me negative numbers.
如果您从较小的项目中减去较大的项目(即从较旧的时间中减去较新的时间),这是预期的。如果您总是希望将差异视为正数并且不想考虑哪个较大,则将属性的结果(如 .Hours)包装在 Math.Abs(绝对值)中。
var hours = System.Math.Abs(spanMe.Hours);
var minutes = System.Math.Abs(spanMe.Minutes);
正如@stuartd 所指出的,Hours/Minutes and TotalHours/TotalMinutes 之间存在差异。确保您使用的是满足您需要的正确产品。
它应该有效:
DateTime pin = DateTime.Parse("jan 11 2017 22:00");
DateTime pout = DateTime.Parse("Jan 12 2017 7:00");
TimeSpan spanMe = pout.Subtract(pin);
Console.WriteLine("Hours : {0}, Minutes : {1}", spanMe.Hours, spanMe.Minutes);
Console.ReadLine();
DateTime pin = today, pout = DateTime.Parse(empTime);
TimeSpan spanMe = pin.Subtract(pout);
var hours = spanMe.TotalHours;
var minutes = spanMe.TotalMinutes;
您想使用 TotalHours
和 TotalMinutes
,因为它们将处理其中的分数,而 Hours
和 Minutes
return 仅处理整数值。您还需要像上面那样为减法步骤交换操作数的顺序。
这是我现在的问题,我想获得工作的总时数和分钟数。 来自 jan 的例子。 2017 年 11 月 22:00 至 2017 年 1 月 12 日 7:00。 到目前为止,我只有在结束日期不变时才有效
DateTime pin = today, pout = DateTime.Parse(empTime);
TimeSpan spanMe = pout.Subtract(pin);
spanMe.Hours
spanMe.Minutes
它给了我负数。
如果你知道最晚的日期,你需要相应地安排。如果不是,则不能乘以-1:
double GetHouers(DateTime one, DateTime another)
{
var diff = (one - another).TotalHours;
return diff > 0 ? diff : diff * -1;
}
您可以从一个 DateTime 对象中减去另一个,然后使用 DateTime class 的 .TotalHours
属性 来获取小时数。它会给你一个代表总小时数的双精度值。
DateTime pin = today, pout = DateTime.Parse(empTime);
double hours = (pout - pin).TotalHours;
it gives me negative numbers.
如果您从较小的项目中减去较大的项目(即从较旧的时间中减去较新的时间),这是预期的。如果您总是希望将差异视为正数并且不想考虑哪个较大,则将属性的结果(如 .Hours)包装在 Math.Abs(绝对值)中。
var hours = System.Math.Abs(spanMe.Hours);
var minutes = System.Math.Abs(spanMe.Minutes);
正如@stuartd 所指出的,Hours/Minutes and TotalHours/TotalMinutes 之间存在差异。确保您使用的是满足您需要的正确产品。
它应该有效:
DateTime pin = DateTime.Parse("jan 11 2017 22:00");
DateTime pout = DateTime.Parse("Jan 12 2017 7:00");
TimeSpan spanMe = pout.Subtract(pin);
Console.WriteLine("Hours : {0}, Minutes : {1}", spanMe.Hours, spanMe.Minutes);
Console.ReadLine();
DateTime pin = today, pout = DateTime.Parse(empTime);
TimeSpan spanMe = pin.Subtract(pout);
var hours = spanMe.TotalHours;
var minutes = spanMe.TotalMinutes;
您想使用 TotalHours
和 TotalMinutes
,因为它们将处理其中的分数,而 Hours
和 Minutes
return 仅处理整数值。您还需要像上面那样为减法步骤交换操作数的顺序。