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

时间:2016-03-16 20:04:13

标签: c# timespan

我的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

我做错了吗?

2 个答案:

答案 0 :(得分:5)

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

让我们说TimeToMissionsReady 86300float

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

答案 1 :(得分:2)

分钟值由格式化函数舍入。您可以这样做:

    public class MongoDB {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        DatabaseEntry entry = new DatabaseEntry("toolhouse", 18, 16,"Property");
        System.out.println(new Gson().toJson(objToSave));
    }
}

但我相信TimeSpan更容易使用。以下是使用TimeSpan的简单示例:

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