我有这段代码:
timeSpent = endTime - startTime;
msgArea.Items.Add(timeSpent.Hours + " Hours");
我希望它将分钟作为整数返回,以十进制为单位。
我尝试了Convert.ToInt32(...),但不允许。 现在它将返回0.0023304343作为示例,如果它小于1分钟。我想要它只说0分钟 提前致谢
答案 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
,是当天的一部分,Minutes
是Hour
等值得注意的是,自.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);