Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将浮点转换为时间?_C# - Fatal编程技术网

C# 如何将浮点转换为时间?

C# 如何将浮点转换为时间?,c#,C#,例如,假设我有float total_Time=228.10803我想要的是将total_Time转换成一种时间格式,所以它看起来像这样00:03:48我该怎么做 我想这样写: { float total_Time = 0; float h = 0; float m = 0; float s = 0; br.BaseStream.Position = i + 4; total_Time = br.ReadSingle(); //reads 22

例如,假设我有
float total_Time=228.10803
我想要的是将
total_Time
转换成一种时间格式,所以它看起来像这样
00:03:48
我该怎么做

我想这样写:

{

    float total_Time = 0;
    float h = 0;
    float m = 0;
    float s = 0;

    br.BaseStream.Position = i + 4;
    total_Time = br.ReadSingle(); //reads 228.10803
    total_Time = Convert.ToSingle(Math.Round(total_Time, 0));
    if (total_Time < 3600)
    {
        h = 0;
    }
    else
    {
        h = total_Time / 3600;
        h = Convert.ToSingle(Math.Round(h, 0));
        total_Time = total_Time - (h * 3600);
    }
    m = total_Time / 60;
    m = Convert.ToSingle(Math.Round(m, 0));
    total_Time = total_Time - (m * 60);
    s = total_Time;
    s = Convert.ToSingle(Math.Round(s, 0));
    SaveCS_PlayTime.Text = String.Format("Play Time: {0}:{1}:{2}", h, m, s);
}
{
浮动总时间=0;
浮点数h=0;
浮点数m=0;
浮点数s=0;
br.BaseStream.Position=i+4;
total_Time=br.ReadSingle();//读取228.10803
total_Time=Convert.ToSingle(数学四舍五入(total_Time,0));
如果(总时间<3600)
{
h=0;
}
其他的
{
h=总时间/3600;
h=转换为单个(数学四舍五入(h,0));
总时间=总时间-(h*3600);
}
m=总时间/60;
m=转换为单个(数学舍入(m,0));
总时间=总时间-(m*60);
s=总时间;
s=转换为单个(数学舍入(s,0));
SaveCS_PlayTime.Text=String.Format(“播放时间:{0}:{1}:{2}”,h,m,s);
}

但出于某种原因,它显示为这样的
00:4:-12
。也许我犯了个错误。我真的需要一些帮助。我知道有些帖子的标题与我的几乎相同,但没有我想要的答案。

听起来你应该将其转换为
时间跨度
,然后格式化:

using System;

class Test
{
    static void Main()
    {
        float totalSeconds = 228.10803f;
        TimeSpan time = TimeSpan.FromSeconds(totalSeconds);
        Console.WriteLine(time.ToString("hh':'mm':'ss")); // 00:03:48
    }
}
另一种方法是使用my library,您可以在其中构造一个时间字符串,然后将其格式化。

要回答这个问题,您可以使用“普通”数学来获取时间字符串:

var totalSeconds =  228.10803;
var ss = Convert.ToInt32(totalSeconds % 60).ToString("00");
var mm = (Math.Floor(totalSeconds / 60) % 60).ToString("00");
var hh = Math.Floor(totalSeconds / 60 / 60).ToString("00");
Console.WriteLine(hh + ":" + mm + ":" + ss);

谢谢它工作得很好。如果你不介意的话,你能帮我回答这个问题吗?我如何将时间转换成浮动?我这样做是为了让你可以编辑播放时间,并有3个文本框标记(小时、分钟、秒),所以如果有人输入2、15、7,我会把它变成这样的字符串
02:15:07
我该如何将其转换为浮点?@Gecko45444:嗯,我个人可能会将这三个都解析为整数,然后做简单的算术。哦,好的。我会试试的。再次感谢您回答我最初的问题。:)@Gecko45444
(float)TimeSpan.Parse(“02:15:07”).TotalSeconds