本日はC#の小ネタ枠です。
DateTimeとTimeSpanを使って時刻の計算を行う方法についてです。
DateTimeとTimeSpan
DateTime構造体は特定の時点を表します。通常、日時形式で表されます。
learn.microsoft.com
DateSpan構造体は時間間隔を表します。
例えば、あるDateTime値からDateTime値を減算すると、TimeSpan値が返されます。
learn.microsoft.com
サンプルスクリプト
DataTime値からDataSpan値を加減算して特定の時刻を算出したり、TimeSpan値を様々な単位で表示するサンプルコードを作成しました。
・TimeSpanTest.cs
using UnityEngine; public class TimeSpanTest : MonoBehaviour { void Start() { // 現在の時刻を取得する System.DateTime now = System.DateTime.Now; Debug.Log("現在の時刻を取得する"); Debug.Log("Now: " + now); // TimeSpanで加算して1分後、1時間後、1日後、1カ月後の時刻を取得する Debug.Log("TimeSpanで加算して1分後、1時間後、1日後、1カ月後の時刻を取得する"); System.DateTime after1Minutes = now + System.TimeSpan.FromMinutes(1); Debug.Log("After 1 Minutes: " + after1Minutes); System.DateTime after1Hours = now + System.TimeSpan.FromHours(1); Debug.Log("After 1 Hours: " + after1Hours); System.DateTime after1Days = now + System.TimeSpan.FromDays(1); Debug.Log("After 1 Days: " + after1Days); System.DateTime after1Months = now + System.TimeSpan.FromDays(30); Debug.Log("After 1 Months: " + after1Months); // TimeSpanで減算して1分後、1時間前、1日前、1カ月前の時刻を取得する Debug.Log("TimeSpanで減算して1分後、1時間前、1日前、1カ月前の時刻を取得する"); System.DateTime before1Minutes = now - System.TimeSpan.FromMinutes(1); Debug.Log("Before 1 Minutes: " + before1Minutes); System.DateTime before1Hours = now - System.TimeSpan.FromHours(1); Debug.Log("Before 1 Hours: " + before1Hours); System.DateTime before1Days = now - System.TimeSpan.FromDays(1); Debug.Log("Before 1 Days: " + before1Days); System.DateTime before1Months = now - System.TimeSpan.FromDays(30); Debug.Log("Before 1 Months: " + before1Months); // TimeSpanで1カ月の日数、時間数、分数を取得する Debug.Log("TimeSpanで1カ月の日数、時間数、分数を取得する"); System.TimeSpan oneMonth = System.TimeSpan.FromDays(30); Debug.Log("One Month Days: " + oneMonth.TotalDays); Debug.Log("One Month Hours: " + oneMonth.TotalHours); Debug.Log("One Month Minutes: " + oneMonth.TotalMinutes); } }
上記のプログラムを実行すると以下の結果が出力されます。
現在の時刻を取得する Now: 2023/11/17 23:35:12 TimeSpanで加算して1分後、1時間後、1日後、1カ月後の時刻を取得する After 1 Minutes: 2023/11/17 23:36:12 After 1 Hours: 2023/11/18 0:35:12 After 1 Days: 2023/11/18 23:35:12 After 1 Months: 2023/12/17 23:35:12 TimeSpanで減算して1分後、1時間前、1日前、1カ月前の時刻を取得する Before 1 Minutes: 2023/11/17 23:34:12 Before 1 Hours: 2023/11/17 22:35:12 Before 1 Days: 2023/11/16 23:35:12 Before 1 Months: 2023/10/18 23:35:12 TimeSpanで1カ月の日数、時間数、分数を取得する One Month Days: 30 One Month Hours: 720 One Month Minutes: 43200