C# 在.NET中将小时转换为分钟
我有一个时间跨度C# 在.NET中将小时转换为分钟,c#,.net,xaml,time,string-formatting,C#,.net,Xaml,Time,String Formatting,我有一个时间跨度2h 30分钟22秒。但我需要以150min 22秒格式绑定到UI的时间。这怎么可能?任何可用的内置函数或格式?由于您需要总分钟数,您可以使用多重绑定 <TextBlock> <TextBlock.Text> <MultiBinding StringFormat="{}{0}min {1}sec"> <Binding Path="YourTimeSpan.TotalMinutes" Conv
2h 30分钟22秒
。但我需要以150min 22秒
格式绑定到UI的时间。这怎么可能?任何可用的内置函数或格式?由于您需要总分钟数,您可以使用多重绑定
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}min {1}sec">
<Binding Path="YourTimeSpan.TotalMinutes" Converter="{StaticResource ObjectToIntegerConverter}"/>
<Binding Path="YourTimeSpan.Seconds"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
不要忘记在资源中声明它,例如:
<Window
...
xmlns:Converters="clr-namespace:Your.Converters.Namespace">
<Window.Resources>
<Converters:ObjectToIntegerConverter x:Key="ObjectToIntegerConverter"/>
</Window.Resources>
只需自己制作:
public struct MyTimeSpan
{
private readonly TimeSpan _data;
public MyTimeSpan(TimeSpan data)
{
_data = data;
}
public override string ToString()
{
return string.Format("{0:f0}min {1}sec", _data.TotalMinutes, _data.Seconds);
}
}
我对XAML不熟悉,但您可以将TimeSpan
格式化为
var ts = new TimeSpan(2, 30, 22);
Console.WriteLine(string.Format("{0}min {1}sec",
(int)ts.TotalMinutes,
ts.Seconds));
产生
150min 22sec
请注意,TotalMinutes
是一个包含秒数的浮点值。@Petradulin感谢您指出这一点,我现在在回答中已经考虑到了这一点。
150min 22sec