天天看點

Unity擷取系統時間-所有顯示方式 DateTime類詳解12345其他

Unity擷取系統時間

DateTime 類教程詳解

本文提供全圖文流程,中文翻譯。

Chinar 堅持将簡單的生活方式,帶給世人!

(擁有更好的閱讀體驗 —— 高分辨率使用者請根據需求調整網頁縮放比例)

Chinar —— 心分享、心創新!

助力快速了解 Unity 以及 DateTime 時間類的用法

給新手節省寶貴的時間,避免采坑!

Chinar 教程效果:

Debug.Log(System.DateTime.Now);        // 目前本地時間 (年月日時分秒) -- 10/4/2018 9:38:19 PM
        Debug.Log(System.DateTime.UtcNow);     // 目前世界時間 (年月日時分秒) -- 10/4/2018 1:38:19 PM
        Debug.Log(System.DateTime.Now.Year);   // 目前時間 (年)
        Debug.Log(System.DateTime.Now.Month);  // 目前時間 (月)
        Debug.Log(System.DateTime.Now.Day);    // 目前時間 (日)
        Debug.Log(System.DateTime.Now.Hour);   // 目前時間 (時)
        Debug.Log(System.DateTime.Now.Minute); // 目前時間 (分)
        Debug.Log(System.DateTime.Now.Second); // 目前時間 (秒)           

1

Get Time —— 擷取時間

Unity 中我們要擷取時間,隻需要使用 System 命名空間下的 DateTime 類即可完成

其他
Unity擷取系統時間-所有顯示方式 DateTime類詳解12345其他
Debug.Log(System.DateTime.Now);        // 目前本地時間 (年月日時分秒) -- 10/4/2018 9:38:19 PM
        Debug.Log(System.DateTime.UtcNow);     // 目前世界時間 (年月日時分秒) -- 10/4/2018 1:38:19 PM
        Debug.Log(System.DateTime.Now.Year);   // 目前時間 (年)
        Debug.Log(System.DateTime.Now.Month);  // 目前時間 (月)
        Debug.Log(System.DateTime.Now.Day);    // 目前時間 (日)
        Debug.Log(System.DateTime.Now.Hour);   // 目前時間 (時)
        Debug.Log(System.DateTime.Now.Minute); // 目前時間 (分)
        Debug.Log(System.DateTime.Now.Second); // 目前時間 (秒)           

2

string Convert DateTime —— 字元串轉時間

DateTime 是一個十分強大的類

它幾乎可以實作你想要的所有功能(關于時間),無論是顯示還是對遊戲時間的處理

建立一個指定的時間,隻需要在構造函數中初始化 年、月、日、時、分、秒 即可

格式化時間,顯示 需要用

yyyyMMddHH:mm:ss

來對應的格式化時間

Unity擷取系統時間-所有顯示方式 DateTime類詳解12345其他
/// <summary> 
    /// 初始化函數
    /// </summary>
    void Start()
    {
        DateTime date1 = new DateTime();                    //    1/1/0001 12:00:00 AM —— 預設構造函數
        DateTime date2 = new DateTime(2008, 6, 6, 6, 6, 6); //    6/6/2008 6:06:06 AM —— 初始化 年、月、日、時、分、秒
        print(date2.ToString("yyyyMMddHH:mm:ss"));          //    2008060606:06:06 
        print(date2.ToString("yyyy-MM-ddHH→mmss"));     //    2008-06-0606→0606 —— DateTime.ToString(String)使用自定義方式格式化日期字元串
        DateTime date3 = DateTime.Now;                      //    10/4/2018 12:43:41 AM —— 目前 本地時間
        DateTime date4 = DateTime.UtcNow;                   //    10/3/2018 4:43:41 PM —— 目前 協調世界時間
        DateTime date5 = DateTime.Today;                    //    10/4/2018 12:00:00 AM —— 今天 
    }           

3

DateTime —— 日期時間聲明、格式化

DateTime 為我們提供了一個字元串轉換為 DateTime 對象的解決方案

可以将固定格式的字元串轉為時間類對象

字元串轉世界時間:

20080606T06:06:06Z

→→

6/6/2008 2:06 PM

字元串轉本地時間:

20080606T06:06:06Z

6/6/2008 6:06 AM

字元串隻有年份:

2008

1/1/2008 12:00 AM

會自動預設 1月1号 中午12點

Unity擷取系統時間-所有顯示方式 DateTime類詳解12345其他
/// <summary> 
    /// 初始化函數
    /// </summary>
    void Start()
    {
        string   iso8601String1 = "20080606T06:06:06Z";                                                                                          //    字元串中包含 T 、Z
        DateTime date1ISO8602   = DateTime.ParseExact(iso8601String1, "yyyyMMddTHH:mm:ssZ", System.Globalization.CultureInfo.CurrentCulture);    //    字元串帶 T、Z:将字元串轉為 DateTime 類型,時間是協調世界時間
        print(string.Format("{0} --> {1:g}", iso8601String1, date1ISO8602));                                                                     //    20080606T06:06:06Z --> 6/6/2008 2:06 PM
        string   iso8601String2 = "2008-06-06-06:06:06";                                                                                         //    字元串中 不包含 T 、Z
        DateTime date2ISO8602   = DateTime.ParseExact(iso8601String2, "yyyy-MM-dd-HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture); //    将固定格式的字元串格式化,并轉為 DateTime 類型 時間是本地時間
        print(string.Format("{0} --> {1:g}", iso8601String2, date2ISO8602));                                                                     //    2008-06-06-06:06:06 --> 6/6/2008 6:06 AM
        string   iso8601String3 = "2008";                                                                                                        //    字元串中 隻有年份
        DateTime date2ISO8603   = DateTime.ParseExact(iso8601String3, "yyyy", System.Globalization.CultureInfo.InvariantCulture);                //    如果不寫月份日期具體時間,會預設 1月1号 12點
        print(string.Format("{0} --> {1}", iso8601String3, date2ISO8603));                                                                       //    2008 --> 1/1/2008 12:00:00 AM
    }           

4

TimeSpan —— 時間間隔

兩個不同的 DateTime 對象是可以相減的 (注意:不可以相加 )

得到一個 TimeSpan (時間間隔) 對象

Unity擷取系統時間-所有顯示方式 DateTime類詳解12345其他
/// <summary> 
    /// 初始化函數
    /// </summary>
    void Start()
    {
        DateTime date1 = new DateTime(2008, 6, 6, 6, 6, 6); //2008年6月6号6時6分6秒
        DateTime date2 = new DateTime(2008, 6, 8, 6, 6, 5); //2008年6月8号6時6分5秒
        TimeSpan span1 = date2 - date1;                     //相減 傳回 TimeSpan(時間間隔) 對象
        print(span1);                                       //1.23:59:59 —— 相差 1天 23小時59分59秒

        TimeSpan span = new TimeSpan(1, 1, 1, 1, 1); //也可自己聲明一個 多個構造函數自己選,最大支援天,最小支援微秒
        print("span:" + span);                       //span:1.01:01:01.0010000
    }           

5

.Net DateTime —— DateTime 微軟官方文檔

由于功能太多, Chinar 僅列舉了常用的幾個

想要了解更多,請到微軟官方檢視文檔

Unity擷取系統時間-所有顯示方式 DateTime類詳解12345其他
DateTime 微軟官方文檔 (新手必備!)

May Be —— 搞開發,總有一天要做的事!

擁有自己的伺服器,無需再找攻略!

Chinar 提供一站式教程,閉眼式建立!

為新手節省寶貴時間,避免采坑!

伺服器、建站、備案、網站配置等(伺服器相關教程大全)

END

本部落格為非營利性個人原創,除部分有明确署名的作品外,所刊登的所有作品的著作權均為本人所擁有,本人保留所有法定權利。違者必究

對于需要複制、轉載、連結和傳播部落格文章或内容的,請及時和本部落客進行聯系,留言,Email: [email protected]

對于經本部落客明确授權和許可使用文章及内容的,使用時請注明文章或内容出處并注明網址