Ral*_*ton 9 c# silverlight formatting timespan
以下代码
Console.WriteLine("{0:%h} hours {0:%m} minutes",
new TimeSpan(TimeSpan.TicksPerDay));
Run Code Online (Sandbox Code Playgroud)
产生这个输出:
0小时0分钟
我想要的是这个输出:
24小时0分钟
我在这个格式字符串中缺少什么?
PS我知道我可以手动将TimeSpan分成几天和几小时,并将两者相乘,但宁愿使用自定义格式字符串,因为这些时间跨度显示在silverlight数据网格中,人们期待看到horus,而不是几天.
Chr*_*uts 13
根据MSDN,使用%h会告诉你
时间间隔内的整个小时数不计入天数的一部分.
我想你需要使用类的TotalHours属性,TimeSpan如:
TimeSpan day= new TimeSpan(TimeSpan.TicksPerDay);
Console.WriteLine("{0} hours {1} minutes", (int)day.TotalHours, day.Minutes);
Run Code Online (Sandbox Code Playgroud)
更新
如果您绝对需要通过将自定义格式化程序传递给ToString方法来实现所述格式,则可能需要创建自己的CustomTimeSpan类.不幸的是,你不能从a继承struct,所以你必须从头开始构建它.
Chr*_*isF 10
似乎没有一种格式选项可以获得总时数TimeSpan.您最好的选择是使用该TotalHours物业:
var mySpan = new TimeSpan(TimeSpan.TicksPerDay);
Console.WriteLine("{0} hours {1} minutes", (int)mySpan.TotalHours, mySpan.Minutes);
Run Code Online (Sandbox Code Playgroud)
TotalHours 返回一个double,因为它包含小数小时,因此您需要将其截断为整数部分.