如何在Unity中将1 tick对应1天的整数转换为DD/MM/YYYY日期格式
实现方案
核心逻辑直接使用C#内置DateTime的天数偏移能力实现,无需手动换算秒数,计算准确无误差,适配你的需求规则:1tick对应1天,起始日期为1500年1月1日。
修改步骤
- 引入
System.Globalization命名空间,保证日期分隔符固定为/,不受系统区域设置影响 - 在类中定义起始日期常量
- 替换原tick计数文本为格式化后的日期字符串
完整修改后代码
using System; using System.Globalization; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class TimeTickSystem : MonoBehaviour { public class OnTickEventArgs : EventArgs { public int tick; } public static event EventHandler<OnTickEventArgs> OnTick; public GameObject textDisplay; private const float Tick_Timer_Max = 0.2f; // 定义起始日期:1500年1月1日 private readonly DateTime _startDate = new DateTime(1500, 1, 1); private int tick; private float tickTimer; private void Awake() { tick = 0; } private void Update() { tickTimer += Time.deltaTime; if (tickTimer >= Tick_Timer_Max) { tickTimer -= Tick_Timer_Max; tick++; if (OnTick != null) OnTick(this, new OnTickEventArgs { tick = tick }); // 按DD/MM/YYYY格式输出日期 textDisplay.GetComponent<Text>().text = _startDate.AddDays(tick).ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); } } }
补充说明
如果后续需要从任意tick值反查日期,直接调用_startDate.AddDays(指定tick值).ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)即可得到对应日期,兼容读档、时间回滚等场景。
内容的提问来源于stack exchange,提问作者FinnM
相关产品推荐
相关产品推荐

