我想在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一样。我错过了什么?
希望得到帮助: - )
答案 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;