C# Digital Timer

Hi
I have two timers in my game. One of them is real time, and the other one is 33% faster.

At the moment the timer appears in seconds, but i would like them to be as a digital clock ( hh::mm:ss)

here is the code I have so far :

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class TimeManager : MonoBehaviour {

private bool timersMayRun = false;

public Text RealTimeTimerTextfield;
public Text FastTimeTextfield;

private float RealtimeTimer;
private float FastTimeTimer;

public void Update(){

	if (timersMayRun) {
		RealtimeTimer = RealtimeTimer + Time.deltaTime;
		FastTimeTimer = FastTimeTimer + Time.deltaTime * 1.33f;

		//RealTimeTimerTextfield.text = "" + RealtimeTimer;
		
		FastTimeTextfield.text = "" + FastTimeTimer;

	}// if if timerwaurun;

}// timer

public void StartTimers(){
	timersMayRun = true;

	}// end startTimer method;

public void PauzeTimers(){
	timersMayRun = false;
	
}// end startTimer method;

}

I am amazed that your google searching didn’t come up with an answer. Anyway:

a) Divide you time by 60 and convert result into a float.
b) Multiply the fractional part by 60 and that’s seconds.
c) Subtract the fractional part.
d) Duplicate a-c again and that’s minutes.
e) What’s left is hours.

So 3723, divided by 60 is 62.05. 0.05*60 is 3, so 3 seconds. 62/60 is 1.033333, 0.03333333 * 60 is 2. Leaves 1. So you have 01:02:03.

However, I think it’s easier to do the work as the time increases. Have a variable called seconds, which you add time to each frame. When seconds is greater than 60, subtract 60 from seconds, and add 1 to minutes. If minutes > 60 subtract 60 from minutes and add 1 to hours.

You can use the String.Format() method:

        private string SecondsToHhMmSs(int seconds)
        {
            return string.Format("{0:00}:{1:00}:{2:00}",seconds/3600,(seconds/60)%60,seconds%60);
        }