只需要使用 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); // 当前时间 (秒)
它几乎可以实现你想要的所有功能(关于时间),无论是显示还是对游戏时间的处理
创建一个指定的时间,只需要在构造函数中初始化 年、月、日、时、分、秒 即可
格式化时间,显示 需要用 yyyyMMddHH:mm:ss
来对应的格式化时间
///
/// 初始化函数
///
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-dd★HH→mm☆ss")); // 2008-06-06★06→06☆06 —— 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 —— 今天
}
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点
///
/// 初始化函数
///
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
}
两个不同的 DateTime 对象是可以相减的 (注意:不可以相加 )
得到一个 TimeSpan (时间间隔) 对象
///
/// 初始化函数
///
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
}
由于功能太多, 仅列举了常用的几个
想要了解更多,请到微软官方查看文档
DateTime 微软官方文档 (新手必备!)