使用 String.Format 将秒数转换为 HH:MM:SS

Convert seconds to HH:MM:SS with String.Format

我有一个 float 表示秒数,我想制作一个格式为 hh:mm:ss 的字符串,表示从 24 小时开始倒计时。 我正在尝试使用此代码:

TimeToMissionsReady = 86400f - FromMissionCompletedSeconds;
TimeToMissionsReadyString = string.Format ("{0:00}:{1:00}:{2:00}", TimeToMissionsReady / 3600f, (TimeToMissionsReady / 60f) % 60f, TimeToMissionsReady % 60f);

Debug.Log (TimeToMissionsReadyString);

但它不起作用,因为它显示了奇怪的东西,例如: 24:60:30 一秒钟后 24:59:29

我是不是做错了什么?

甚至都没有告诉我们TimeToMissionsReady的类型和值到底是什么,我不明白24的意思:60:30 在第二个 24:59:29 句子之后,但解决问题的正确方法似乎是在 .NET Framework 中使用 TimeSpan 结构。

假设您的 TimeToMissionsReady86300 作为 float

float TimeToMissionsReady = 86300f;

您可以使用 TimeSpan.FromSeconds(double) method 来计算这些值。

TimeSpan ts = TimeSpan.FromSeconds(TimeToMissionsReady);

你可以用 Custom TimeSpan Format Strings 格式化它;

Debug.Log(ts.ToString("hh\:mm\:ss")); // 23:58:20

分钟值按格式四舍五入 function.You 可以这样做:

string TimeToMissionsReadyString = string.Format("{0:00}:{1:00}:{2:00}", TimeToMissionsReady / 3600f, Math.Truncate((TimeToMissionsReady / 60f)) % 60f, TimeToMissionsReady % 60f);

但我相信 TimeSpan 更易于使用。这是一个使用 TimeSpan 的简单示例:

 float f = 86400f;
 TimeSpan t = TimeSpan.FromSeconds(f);
 string s = string.Format("{0}:{1}:{2}", ((int) t.TotalHours), t.Minutes, t.Seconds);