在 .NET 中将小时数转换为分钟数
Converting Hours to Minutes in .NET
我有一个时间跨度 2h 30min 22sec
。但我需要以 150min 22sec
格式限制到 UI 的时间。怎么可能?有可用的内置函数或格式吗?
由于您需要总分钟数,因此可以使用 MultiBinding
。
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}min {1}sec">
<Binding Path="YourTimeSpan.TotalMinutes" Converter="{StaticResource ObjectToIntegerConverter}"/>
<Binding Path="YourTimeSpan.Seconds"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
编辑:
正如评论中所指出的,您必须将 TotalMinutes
转换为整数,为此,您可以使用 IValueConverter
.
public class ObjectToIntegerConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return System.Convert.ToInt32(value);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
不要忘记在您的 Resources
中声明它,例如:
<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
我有一个时间跨度 2h 30min 22sec
。但我需要以 150min 22sec
格式限制到 UI 的时间。怎么可能?有可用的内置函数或格式吗?
由于您需要总分钟数,因此可以使用 MultiBinding
。
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}min {1}sec">
<Binding Path="YourTimeSpan.TotalMinutes" Converter="{StaticResource ObjectToIntegerConverter}"/>
<Binding Path="YourTimeSpan.Seconds"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
编辑:
正如评论中所指出的,您必须将 TotalMinutes
转换为整数,为此,您可以使用 IValueConverter
.
public class ObjectToIntegerConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return System.Convert.ToInt32(value);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
不要忘记在您的 Resources
中声明它,例如:
<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