現在時刻を取得

現在時刻を取得するには
DateTime dt = DateTime.Now;
を使います

取得できる値

 値  説明
 dt.Year  年
 dt.Month  月
 dt.Day  日
 dt.Hour  時
 dt.Minute  分
 dt.Second  秒
 dt.DayOfWeek  曜日
 dt.DayOfYear
 年間積算日

リアルタイムでカウントを取る

リアルタイムでカウントを取る場合 以下のスクリプトを使います

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Time : MonoBehaviour {

 string timestring;
 string timedate;
 double spantime;
 public static System.DateTime datetime;

 // Use this for initialization
 void Start () {
  // 時刻を保存するデータの名前
  timedate = "lasttime";
  // 前回終了時の時刻を取得する
  timestring = PlayerPrefs.GetString (timedate);
  // 初回起動時は取得できないので代わりに現在の時刻を入れる
  if (timestring == null || timestring == "") {
   timestring = System.DateTime.Now.ToString ();
   // 起動時の時刻を保存
   PlayerPrefs.SetString (timedate, timestring.ToString ());
  }
  // 保存しておいた時刻は文字列なので時刻(DateTime)に変換
  datetime = System.DateTime.Parse(timestring);
 }

 // Update is called once per frame
 void Update () {
  // データが存在するなら
  if (timestring != null || timestring != "") {
   // 現在の時刻-保存しておいた時刻で経過時間を求める
   System.TimeSpan span = System.DateTime.Now - datetime;
   // 経過時間を秒で取得
   spantime = span.TotalSeconds;
   // 経過時間を時間 分 秒に変換する
   int hour = (int)(spantime / 3600);
   int miniute = (int)(spantime % 3600 / 60);
   int second = (int)(spantime % 3600 % 60);
   // 経過時間のログ
   Debug.Log (hour + "時間" + miniute + "分" + second + "秒");
  }
 }
}

これでゲームを最初に起動した時から 現在時刻までのカウントを取ってくれます


指定時刻までのカウントダウンをする

指定時刻までのカウントダウンをする場合 以下のスクリプトを使います

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Daily : MonoBehaviour
{
    string timestring;
    string timedate;
    double spantime;
    public static System.DateTime datetime;

    // Use this for initialization
    void Start()
    {
        // 時刻を保存するデータの名前
        timedate = "nexttime";
        // 前回終了時の更新時間を取得する
        timestring = PlayerPrefs.GetString(timedate);
        // 初回起動時は取得できないので代わりに次の更新時間を入れる
        if (timestring == null || timestring == "")
        {
            DailyData();
        }
        else
        {
            // 保存しておいた時刻は文字列なので時刻(DateTime)に変換
            datetime = System.DateTime.Parse(timestring);
        }
    }

    // Update is called once per frame
    void Update()
    {
        // データが存在するなら
        if (timestring != null || timestring != "")
        {
            // 更新時刻-現在の時刻で残り時間を求める
            System.TimeSpan span = datetime - System.DateTime.Now;
            // 残り時間を秒で取得
            spantime = span.TotalSeconds;
            // 更新時刻を過ぎたら更新する
            if (spantime <= 0)
            {
                DailyData();
            }
            // 残り時間を時間 分 秒に変換する
            int hour = (int)(spantime / 3600);
            int miniute = (int)(spantime % 3600 / 60);
            int second = (int)(spantime % 3600 % 60);
            // 残り時間のログ
            Debug.Log(hour + "時間" + miniute + "分" + second + "秒");
        }
    }

    public void DailyData()
    {
        // 現在時刻を取得
        System.DateTime da = System.DateTime.Now;
        // 更新時刻を設定
        timestring = da.Month + "/" + da.Day + "/" + da.Year + " " + da.Hour + ":" + da.Minute + ":" + da.Second;
        // 文字列を時刻(DateTime)に変換
        datetime = System.DateTime.Parse(timestring);
        // 1日後に更新する
        datetime = datetime.AddDays(1);
        // 更新時刻を保存
        PlayerPrefs.SetString(timedate, datetime.ToString());
    }
}

これで ゲームを起動した日の1日後までのカウントを取ってくれます
1日経過した後は 再び1日後までのカウントを取ってくれます
ログインボーナスなどを作る場合に役に立ちます

 datetime.AddSeconds(1);
 1秒後までのカウント
 datetime.AddMinutes(1);
 1分後までのカウント
 datetime.AddHours(1);
 1時間後までのカウント
 datetime.AddDays(1);
 1日後までのカウント
 datetime.AddMonths(1);
 1カ月後までのカウント
 datetime.AddYears(1);
 1年後までのカウント

戻る