절전 모드에서 현재 시간을 표기 및 절전한 시간을 표기하는 기능을 구현한다.
이때 현재 시간 표기는 국가별 변경사항에 따른 방식을 고려한다.

우선은 한국 시간을 기준으로 구현을 시도하고, 다른 국가로 변경할 수 있는 방식의 간단한 구현만 진행함
using System;
using System.Collections;
using TMPro;
using UnityEngine;
public class UiTime : MonoBehaviour
{
[SerializeField] private TMP_Text _currentTime;
[SerializeField] private TMP_Text _progressTime;
[SerializeField] private string _timeZoneId = "Korea Standard Time";
private Coroutine _coroutine;
private float _startTime;
private TimeZoneInfo _timeZone;
private void Awake()
{
_timeZone = TimeZoneInfo.FindSystemTimeZoneById(_timeZoneId);
}
private void OnEnable()
{
if (_coroutine != null)
StopCoroutine(_coroutine);
_startTime = Time.realtimeSinceStartup;
_coroutine = StartCoroutine(TimeCoroutine());
}
IEnumerator TimeCoroutine()
{
while (true)
{
DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, _timeZone);
_currentTime.text = localTime.ToString("HH : mm : ss");
float elapsed = Time.realtimeSinceStartup - _startTime;
TimeSpan timeSpan = TimeSpan.FromSeconds(elapsed);
_progressTime.text = $"{timeSpan.Minutes:D2}min {timeSpan.Seconds:D2}sec";
yield return new WaitForSecondsRealtime(1f);
}
}
}

Time Zone Id 같은 경우는 컴퓨터의 레지스트리 편집기를 통해서 확인할 수 있으며, 필요에 따라 커스텀 Time Zone을 추가할 수도 있다.
