将double转换为时间格式

时间:2018-09-13 17:50:11

标签: c#

我是ASP.NET MVC C#编程的新手

我有一个类,其中包含一个称为double类型的Credits的属性。在我的Web应用程序中,此属性应表示为时间格式(hh:mm)。因此,例如,如果我要给Credits设置2.5的值,我希望它显示2:50、6.15作为6:15,以此类推。我知道TimeSpan可以将double转换为时间格式,但可以将2.5转换为2: 30岁有没有一种方法可以轻松地将double转换为该时间格式,而无需将其数据类型更改为String?是否有某种辅助属性标签或使之简单的东西?

1 个答案:

答案 0 :(得分:1)

您似乎希望将整数和小数部分分开,并且希望小数部分为两位数。

因此,这就是将整数部分作为int的方式。

var whole = (int)Math.Truncate(value);

这会将小数部分设为int,在这种情况下,仅小数点后两位。

var twoFrac = (int)(((decimal)value % 1) * 100);

因此,如果value12.345,则twoFrac34中将是int

现在您可以按照自己喜欢的方式显示这些内容。

实际上,您可以将上述内容放入方法的内部,这样就可以将小数部分最多增加到想要的小数位数,如下所示:

private static int GetFractionalPart(double value, int decimalPlaces)
{
    var factor = (int)Math.Pow(10, decimalPlaces);
    var fractional = (int)(((decimal)value % 1) * factor);
    return fractional;
}

注意

但是,正如许多其他人在评论中指出的那样,这令人困惑,如果您实际上正在处理时间值,您甚至可以说出错误的处理方式。例如,使用您的条件,2.75的值将转换为2:75,但这对时间没有任何意义。

因此,您确实应该使用原始帖子中提到的TimeSpan,它将2.5转换为2:30等。