获得没有小数的totalminutes

时间:2014-08-01 12:02:28

标签: c#

我有这段代码:

timeSpent = endTime - startTime;
msgArea.Items.Add(timeSpent.Hours + " Hours");

我希望它将分钟作为整数返回,以十进制为单位。

我尝试了Convert.ToInt32(...),但不允许。 现在它将返回0.0023304343作为示例,如果它小于1分钟。我想要它只说0分钟 提前致谢

2 个答案:

答案 0 :(得分:4)

如果你对小数位不感兴趣,你只需要施放它:

decimal d = 0.0023304343m;
int i = (int)d;

但我认为您希望将TimeSpan格式化为:

string output = string.Format("{0} Days, {1} Hours and {2} Minutes"
    , (int)timeSpent.TotalDays
    , timeSpent.Hours
    , timeSpent.Minutes);

正如您所看到的,有Total...个属性将单元的总量返回为double和Hours / Minutes等返回整数的属性。区别在于:

  • TotalHours例如可以是36.1234
  • Hours始终是int,是当天的一部分,MinutesHour
  • 的一部分

值得注意的是,自.NET 4起,您也可以使用ToString格式字符串,因为TimeSpan实现了IFormattable。我发现很难记住如何正确地逃避它:

string output = timeSpent.ToString(@"hh\:mm"); // for example
output = timeSpent.ToString("d' Days, 'h' Hours, 'm' Minutes.'"); // your example

答案 1 :(得分:0)

您可以使用Math.Floor

var hours = (int)Math.Floor(timeSpent.Hours);