统一倒计时7天并重置

时间:2015-09-03 21:05:34

标签: c# unity3d timer

我想在Unity C#中实时倒计时7天,但我不知道该怎么做?

我希望能够得到HH:MM:SS

到目前为止,我有这个:

public UILabel timerLabel;

public float myTimer = 3000.0f;

void Update () {    
    if(myTimer>0) {
        myTimer -= Time.deltaTime;

        //int days = Mathf.FloorToInt(myTimer / 60F);
        //int hours = Mathf.FloorToInt(myTimer / 60F);
        int minutes = Mathf.FloorToInt(myTimer / 60F);
        int seconds = Mathf.FloorToInt(myTimer - minutes * 60);

        string niceTime = string.Format("{0:00}:{1:00}:{2:00}", minutes, minutes, seconds);

        timerLabel.text= niceTime;
    }   

}

我想,当用户打开游戏时,获取当前时间(不是设备时间,但是某种世界时间),并且能够设置应该重置的标准时间,让我们说每个星期天@午夜。

这是可能的,如果是的话......怎么样?

任何帮助都表示赞赏,并提前感谢: - )

#######编辑

好的,尝过这样的Chris Mills-Price解决方案:

public UILabel timerLabel;

DateTime startTime = DateTime.UtcNow;
DateTime endTime = DateTime.UtcNow;

void Start(){
    worldTime = DateTime.UtcNow;
    startTime = Convert.ToDateTime("08/31/2015 00:00:01");
    endTime = startTime.AddDays(7);
}

void Update () {    
    TimeSpan timeRemaining = endTime-startTime;

    int hours   = (int) timeRemaining.TotalHours; // truncate partial hours
    int minutes = timeRemaining.Minutes;
    int seconds = timeRemaining.Seconds;

    string niceTime = string.Format("{0:00}:{1:00}:{2:00}", hours, minutes, seconds);

    timerLabel.text= niceTime;
}

我无法做到我想做的事。我得到的只是时间从剩余时间:7.00:00:00

我的开始时间似乎还可以和endTime一样。我错过了什么?

希望得到帮助: - )

2 个答案:

答案 0 :(得分:0)

正如B所建议的那样,DateTime.UtcNow很可能是你想要的。

DateTime还提供了许多方法来帮助进行日期算术,这使得这非常简单。

在你的情况下,假设你有:

DateTime startTime = DateTime.UtcNow;

然后您可以在一周后用以下方法计算值:

DateTime endTime = startTime.AddDays(7);

要计算您的HH:MM:SS值,请从另一个中减去一个以获得TimeSpan并使用TimeSpan TotalHours / Minutes / Seconds属性。

TimeSpan timeRemaining = endTime-startTime;

int hours   = (int) timeRemaining.TotalHours; // truncate partial hours
int minutes = timeRemaining.Minutes;
int seconds = timeRemaining.Seconds;

答案 1 :(得分:0)

尝试使用DateTime.UtcNow代替starttime

TimeSpan timeRemaining = endTime-DateTime.UtcNow;