本文提供全图文流程,中文翻译。

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); // 当前时间 (秒)
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); // 当前时间 (秒)
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 —— 今天 
 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
 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
 .Net DateTime  —— DateTime 微软官方文档



由于功能太多, Chinar 仅列举了常用的几个

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

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

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

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

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




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

END

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

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

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

Element UI Time Picker时间格式化及后端读取类(2023-03-02T00:00:12.000Z)数据
Element UI Time Picker时间格式化及后端读取类(2023-03-02T00:00:12.000Z)数据
Java常用类(2)--日期时间相关类Date、Calendar、LocalDateTime、Instant全面
Java常用类(2)--日期时间相关类Date、Calendar、LocalDateTime、Instant全面
原文:WPF DatePicker默认显示当前日期 WPF的日历选择控件默认为当前日期,共有两种方法,一种静态,一种动态。 静态的当然写在DatePicker控件的属性里了,动态的写在对应的cs文件里,具体请看下面。
公司出现这个问题,让写一个一直比当前时间天数大2的倒计时的日历。 刚开始是这样写的:得到系统时间年月日,将日的天数+2,并判断日的天数大小,并与闰年平年一起比较后将经过计算的年月日显示到桌面上。
原文:WPF Calendar 日历控件 样式自定义 粗略的在代码上做了些注释 blend 生成出来的模版 有的时候 会生成 跟 vs ui界面不兼容的代码 会导致可视化设计界面 报错崩溃掉 但是确不影响 程序的编译运行 这个样式表 在vs 里会提示动画不兼容 Foreground属性 报错 ...