我使用基本功能获得小时,分钟秒。如果时间少于24小时,一切都有效。我想要花上几个小时,即使他们超过24天而不是几天。
下面的示例产生: 00H:00米:00年代
我的测试:
[TestMethod()]
public void Test_Hours_Greater_Than_24()
{
EmployeeSkill target = new EmployeeSkill(); appropriate value
double sec = 86400;
string expected = "24h:00m:00s";
string actual;
actual = target.GetAgentTime(sec);
Assert.AreEqual(expected, actual);
}
我的方法:
public string GetAgentTime(double sec)
{
TimeSpan t = TimeSpan.FromSeconds(sec);
return string.Format("{0:D2}h:{1:D2}m:{2:D2}s",
t.Hours,
t.Minutes,
t.Seconds
);
}
答案 0 :(得分:6)
试试t.TotalHours。 t.Hours
一旦达到一整天就会换行,并相应地增加t.Days
。
获取以整数小时表示的当前TimeSpan结构的值。
using System;
public class Example
{
public static void Main()
{
// Define an interval of 1 day, 15+ hours.
TimeSpan interval = new TimeSpan(1, 15, 42, 45, 750);
Console.WriteLine("Value of TimeSpan: {0}", interval);
Console.WriteLine("{0:N5} hours, as follows:", interval.TotalHours);
Console.WriteLine(" Hours: {0,3}",
interval.Days * 24 + interval.Hours);
Console.WriteLine(" Minutes: {0,3}", interval.Minutes);
Console.WriteLine(" Seconds: {0,3}", interval.Seconds);
Console.WriteLine(" Milliseconds: {0,3}", interval.Milliseconds);
}
}
// The example displays the following output:
// Value of TimeSpan: 1.15:42:45.7500000
// 39.71271 hours, as follows:
// Hours: 39
// Minutes: 42
// Seconds: 45
// Milliseconds: 750
答案 1 :(得分:1)
使用TotalHours
属性,该属性返回以整数小时表示的TimeSpan
的整个值。您只需截断该值即可获得整个小时:
public string GetAgentTime(double sec) {
TimeSpan t = TimeSpan.FromSeconds(sec);
return string.Format(
"{0:D2}h:{1:D2}m:{2:D2}s",
Math.Floor(t.TotalHours),
t.Minutes,
t.Seconds
);
}
答案 2 :(得分:1)
你应该使用TimeSpan.TotalHours,但它会返回一个双倍,所以也要修改格式:
return string.Format("{0:00}h:{1:D2}m:{2:D2}s", t.TotalHours,
t.Minutes, t.Seconds);
答案 3 :(得分:-1)
为什么要打扰TimeSpan
?这更简单,完全符合您的要求:
public static string GetAgentTime( double s )
{
int seconds = (int) Math.Round(s,0) ;
int hours = Math.DivRem( seconds , 60*60 , out seconds ) ; // seconds/hour
int minutes = Math.DivRem( seconds , 60 , out seconds ) ; // seconds/minute
string agentTime = string.Format( "{0:00}h:{1:00}m:{2:00}s",
hours , minutes , seconds
) ;
return agentTime ;
}