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 類即可完成
其他
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
來對應的格式化時間

/// <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點

/// <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 (時間間隔) 對象

/// <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 僅列舉了常用的幾個
想要了解更多,請到微軟官方檢視文檔

May Be —— 搞開發,總有一天要做的事!
擁有自己的伺服器,無需再找攻略! Chinar 提供一站式教程,閉眼式建立! 為新手節省寶貴時間,避免采坑! |
END
本部落格為非營利性個人原創,除部分有明确署名的作品外,所刊登的所有作品的著作權均為本人所擁有,本人保留所有法定權利。違者必究
對于需要複制、轉載、連結和傳播部落格文章或内容的,請及時和本部落客進行聯系,留言,Email: [email protected]
對于經本部落客明确授權和許可使用文章及内容的,使用時請注明文章或内容出處并注明網址