转换秒,HH:MM:SS用的String.Format

问题描述 投票:2回答:2

我有一个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

难道我做错了什么?

c# timespan
2个回答
6
投票

你甚至没有告诉我们什么是TimeToMissionsReady的类型和值准确,我不明白的24:60:30的含义,似乎第二24:59:29判决,但为您解决问题的正确方法后使用TimeSpan结构在.NET框架。

比方说,你TimeToMissionsReady86300作为float

float TimeToMissionsReady = 86300f;

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

TimeSpan ts = TimeSpan.FromSeconds(TimeToMissionsReady);

enter image description here

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

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

2
投票

纪要值由格式function.You可以这样做四舍五入:

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

但我相信,时间跨度是非常容易使用。下面是一个使用时间跨度的简单示例:

 float f = 86400f;
 TimeSpan t = TimeSpan.FromSeconds(f);
 string s = string.Format("{0}:{1}:{2}", ((int) t.TotalHours), t.Minutes, t.Seconds);
© www.soinside.com 2019 - 2024. All rights reserved.