Unity获取系统时间-所有显示方式 DateTime类详解

简介: Unity获取系统时间-所有显示方式 DateTime类详解 本文提供全流程,中文翻译。助力快速理解 Unity 以及 DateTime 时间类的用法 Unity获取系统时间 DateTime 类教程详解 Unity 中我们要获取时间,只需要使用 System 命名空间下的 DateTim.

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 仅列举了常用的几个

想要了解更多,请到微软官方查看文档
举个例子
DateTime 微软官方文档 (新手必备!)


其他

May Be —— 搞开发,总有一天要做的事!


拥有自己的服务器,无需再找攻略!

Chinar 提供一站式教程,闭眼式创建!

为新手节省宝贵时间,避免采坑!




服务器、建站、备案、网站配置等(服务器相关教程大全)


END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com

对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

相关文章
|
17天前
|
图形学
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏7(附带项目源码)
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏7(附带项目源码)
14 1
|
17天前
|
图形学
【制作100个unity游戏之26】unity2d横版卷轴动作类游9(附带项目源码)
【制作100个unity游戏之26】unity2d横版卷轴动作类游9(附带项目源码)
11 0
|
17天前
|
缓存 图形学
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏8(附带项目源码)
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏8(附带项目源码)
9 0
|
17天前
|
人工智能 定位技术 图形学
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏6(附带项目源码)
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏6(附带项目源码)
12 0
|
17天前
|
图形学
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏5(附带项目源码)
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏5(附带项目源码)
10 0
|
17天前
|
图形学
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏4(附带项目源码)
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏4(附带项目源码)
11 0
|
17天前
|
图形学
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏3(附带项目源码)
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏3(附带项目源码)
6 0
|
17天前
|
图形学
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏2(附带项目源码)
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏2(附带项目源码)
9 0
|
17天前
|
图形学
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏1(附带项目源码)
【制作100个unity游戏之26】unity2d横版卷轴动作类游戏1(附带项目源码)
13 0
|
17天前
|
图形学
【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏——基础篇3(附项目源码)
【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏——基础篇3(附项目源码)
9 0