根据系统时间自动更新自定义DateTime对象

本文关键字:更新 自定义 DateTime 对象 系统 时间 | 更新日期: 2023-09-27 18:15:07

我想我的问题有点令人困惑,因为我不确定我应该如何给它一个合适的标题。

无论如何,我的问题是因为我在服务器上获得当前日期而不是系统时间(或设备的时间)。我怎样才能让它像"时钟"一样工作?

例如:

// I have a string of date retrieved from server, let's call it as "stringFromServer"
myDate = Convert.ToDateTime(stringFromServer);

所以在上面的代码行之后,我需要myDate每秒钟更新一次,以便我可以随时使用它。

假设当前时间(从myDate获取)是09:00,5秒后我希望它更新为09:05。

我想到的一个解决方案是在我的Update()函数中,我将这样做:
myDate.Value.AddSeconds(deltaTime);

但我正在寻找更好的解决方案,希望我能在这里得到一些帮助。

PS:我不使用系统时间的原因是为了防止用户在设备设置中更改时间。所以我必须在用户退出或重新打开应用程序时更新myDate。

根据系统时间自动更新自定义DateTime对象

在Unity3D中,如果你想要一个事件每X秒发生一次,一个好的方法就是使用IEnumerator函数。例如,如果你想跟踪一个自定义时间变量你可以有一个IEnumerator像这样:

IEnumerator UpdateServerTime()
{
    while(true)
    {
        myDate.Value.AddSeconds(1);
        yield return new WaitForSeconds(1);
    }
}

这个示例将继续以每秒1秒的速度更新您的时间变量。正如其他用户在评论中提到的,这不是记录时间的完美方式。但是,如果你想在unity中跟踪时间,它应该实现你想要的。

重要的是要记住,为了正确使用这个方法,您需要像这样调用它:
StartCoroutine(UpdateServerTime());