zoukankan      html  css  js  c++  java
  • C# DateTime的11种构造函数

    别的也不多说没直接贴代码

    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.Linq;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace Time20180929_DateTime
    {
        class Program
        {
            static void Main(string[] args)
            {
                /*
                 * 1.DateTime(Int64):将 DateTime 结构的新实例初始化为指定的刻度数。
                 * 2.DateTime(Int64, DateTimeKind):将 DateTime 结构的新实例初始化为指定的计时周期数以及协调世界时 (UTC) 或本地时间。
                 * 3.DateTime(Int32, Int32, Int32):将 DateTime 结构的新实例初始化为指定的年、月和日。
                 * 4.DateTime(Int32, Int32, Int32, Calendar):将 DateTime 结构的新实例初始化为指定日历的指定年、月和日。
                 * 5.DateTime(Int32, Int32, Int32, Int32, Int32, Int32):将 DateTime 结构的新实例初始化为指定的年、月、日、小时、分钟和秒。
                 * 6.DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)    :将 DateTime 结构的新实例初始化为指定年、月、日、小时、分钟、秒和协调世界时 (UTC) 或本地时间。
                 * 7.DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar):将 DateTime 结构的新实例初始化为指定日历的年、月、日、小时、分钟和秒。
                 * 8.DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32):将 DateTime 结构的新实例初始化为指定的年、月、日、小时、分钟、秒和毫秒。
                 * 9.DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind):将 DateTime 结构的新实例初始化为指定年、月、日、小时、分钟、秒、毫秒和协调世界时 (UTC) 或本地时间。
                 * 10.DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar):将 DateTime 结构的新实例初始化为指定日历的指定年、月、日、小时、分钟、秒和毫秒。
                 * 11.DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind):将 DateTime 结构的新实例初始化为指定日历的指定年、月、日、小时、分钟、秒、毫秒和协调世界时 (UTC) 或本地时间。
                 */
    
    
    
                /*
                 * 1.public DateTime (long ticks):
                 * 一个日期和时间,以公历 0001 年 1 月 1 日 00:00:00.000 以来所经历的以 100 纳秒为间隔的间隔数来表示。
                 * ticks 小于 MinValue 或大于 MaxValue。
                 */
                //时间属性MinValue和MaxValue
                long _minval = DateTime.MinValue.Ticks;
                long _maxval = DateTime.MaxValue.Ticks;
                DateTime _mintime = DateTime.MinValue;
                DateTime _maxtime = DateTime.MaxValue;
                string desc = "minval:{0}, _maxval:{1}, _mintime:{2}, _maxtime:{3}";
    
                string format = "{0}) The {1} date and time is {2:MM/dd/yy hh:mm:ss tt}";
                DateTime dt1 = new DateTime(DateTime.MinValue.Ticks);
                DateTime dt2 = new DateTime(DateTime.MaxValue.Ticks);
    
                //创建一个传统时间为上午2018/9/29 10:39:50基于名称指定的区域性"en-US"并基于布尔值(指定是否使用系统中用户选定的区域性设文化ticks
                long ticks = new DateTime(2018, 9, 29, 10, 39, 50, new CultureInfo("en-US", false).Calendar).Ticks;
                DateTime dt3 = new DateTime(ticks);
    
                Console.WriteLine(desc, _minval, _maxval, _mintime, _maxtime);
                Console.WriteLine(format, 1, "minimum", dt1);
                Console.WriteLine(format, 2, "maxmum", dt2);
                Console.WriteLine(format, 3, "custom ", dt3);
                Console.WriteLine("
    The custom date and time is created from {0:N0} ticks.", ticks);
                Console.WriteLine("
    The custom date and time is created from {0} ticks.", ticks);
    
                /*
                minval:0, _maxval:3155378975999999999, _mintime:0001/1/1 0:00:00, _maxtime:9999/12/31 23:59:59
                1) The minimum date and time is 01/01/01 12:00:00 上午
                2) The maxmum date and time is 12/31/99 11:59:59 下午
                3) The custom  date and time is 09/29/18 10:39:50 上午
    
                The custom date and time is created from 636,738,143,900,000,000 ticks.
    
                The custom date and time is created from 636738143900000000 ticks.
                 */
    
                /*
                 * 2.public DateTime (long ticks, DateTimeKind kind);
                 * DateTime(Int64, DateTimeKind):将 DateTime 结构的新实例初始化为指定的计时周期数以及协调世界时 (UTC) 或本地时间。
                 * kind:
                 * Unspecified  0   表示的时间既未指定为本地时间,也未指定为协调通用时间 (UTC)。
                 * Utc          1   表示的时间为 UTC。
                 * Local        2   表示的时间为本地时间
                 */
                long ticks2 = new DateTime(2018, 9, 29, 10, 39, 50, new CultureInfo("en-US", false).Calendar).Ticks;
                Console.WriteLine("2018-09-29 10:39:50");
                Console.WriteLine("Unspecified:{0}", new DateTime(ticks2, DateTimeKind.Unspecified));
                Console.WriteLine("Utc:{0}", new DateTime(ticks2, DateTimeKind.Utc));
                Console.WriteLine("Local:{0}", new DateTime(ticks2, DateTimeKind.Local));
                /*
                 2018-09-29 10:39:50
                Unspecified:2018/9/29 10:39:50
                Utc:2018/9/29 10:39:50
                Local:2018/9/29 10:39:50
                 */
                /*
                 * 3.public DateTime (int year, int month, int day);
                 * DateTime(Int32, Int32, Int32)
                 * 将 DateTime 结构的新实例初始化为指定的年、月和日。
                 * year:1-9999,month:0-12,day:1-moth中的天数
                 */
                DateTime dt4 = new DateTime(2018, 9, 18);
                Console.WriteLine("dt4的值为{0}", dt4.ToString());
                /*
                 dt4的值为2018/9/18 0:00:00
                 */
    
    
                /*
                 * 4.public DateTime (int year, int month, int day, System.Globalization.Calendar calendar);
                 * DateTime(Int32, Int32, Int32, Calendar):将 DateTime 结构的新实例初始化为指定日历的指定年、月和日。
                 * year:1-9999,month:0-12,day:1-moth中的天数,Calendar用于解释 year、month 和 day 的日历。
                 */
                /*
                 下面的示例调用DateTime(Int32, Int32, Int32, Calendar)构造函数两次实例化两个DateTime值。 第一次调用实例化DateTime通过使用值PersianCalendar对象。 由于波斯日历不能指定为区域性的默认日历,显示日期与波斯历需要单独调用其PersianCalendar.GetMonth, PersianCalendar.GetDayOfMonth,和PersianCalendar.GetYear方法。 构造函数的第二个调用实例化DateTime通过使用值HijriCalendar对象。 该示例将当前区域性更改为阿拉伯语 (叙利亚) 和当前区域性的默认日历更改为回历。 因为回历是当前区域性的默认日历,Console.WriteLine方法使用它来设置日期格式。 还原先前的当前区域性 (这在此情况下是英语 (美国)) 时,Console.WriteLine方法使用当前区域性的默认公历日历来设置日期格式。
                 */
               Console.WriteLine("Using the Persian Calendar:");
               PersianCalendar persian = new PersianCalendar();
               DateTime dt5 = new DateTime(2018,9,29, persian);
               Console.WriteLine(dt5.ToString());
               Console.WriteLine("{0}/{1}/{2}
    ", persian.GetMonth(dt5),persian.GetDayOfMonth(dt5),persian.GetYear(dt5));
    
               Console.WriteLine("Using the Hijri Calendar:");
               CultureInfo dftCulture = Thread.CurrentThread.CurrentCulture;
    
               // Define Hijri calendar.
               HijriCalendar hijri = new HijriCalendar();
               // Make ar-SY the current culture and Hijri the current calendar.
               Thread.CurrentThread.CurrentCulture = new CultureInfo("ar-SY");
               CultureInfo current = CultureInfo.CurrentCulture;
               current.DateTimeFormat.Calendar = hijri;
               string dFormat = current.DateTimeFormat.ShortDatePattern;
               // Ensure year is displayed as four digits.
               dFormat = Regex.Replace(dFormat, "/yy$", "/yyyy");
               current.DateTimeFormat.ShortDatePattern = dFormat;
               DateTime date2 = new DateTime(2018,9,29, hijri);
               Console.WriteLine("{0} culture using the {1} calendar: {2:d}", current,GetCalendarName(hijri), date2);
    
               // Restore previous culture.
               Thread.CurrentThread.CurrentCulture = dftCulture;
               Console.WriteLine("{0} culture using the {1} calendar: {2:d}",CultureInfo.CurrentCulture,GetCalendarName(CultureInfo.CurrentCulture.Calendar),date2);
               /*
                Using the Persian Calendar:
               2639/12/20 0:00:00
               9/29/2018
    
               Using the Hijri Calendar:
               ar-SY culture using the Hijri calendar: 29/09/2018
               zh-CN culture using the Gregorian calendar: 2580/3/16
                */
    
                /*
                 * 5.public DateTime (int year, int month, int day, int hour, int minute, int second);
                 * DateTime(Int32, Int32, Int32, Int32, Int32, Int32)
                 * 将 DateTime 结构的新实例初始化为指定的年、月、日、小时、分钟和秒。
                 * year:1-9999,month:0-12,day:1-moth中的天数,hour:0-23,minuye:0-59,second:0-59
                 */
                DateTime date1 = new DateTime(2018, 9, 29, 11, 20, 26);
                Console.WriteLine(date1.ToString());
                /*2018/9/29 11:20:26*/
    
                /*
                 * 6.public DateTime (int year, int month, int day, int hour, int minute, int second, DateTimeKind kind);
                 * DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)
                 * 将 DateTime 结构的新实例初始化为指定年、月、日、小时、分钟、秒和协调世界时 (UTC) 或本地时间。
                 * year:1-9999,month:0-12,day:1-moth中的天数,hour:0-23,minuye:0-59,second:0-59
                 *kind:
                 *Unspecified  0   表示的时间既未指定为本地时间,也未指定为协调通用时间 (UTC)。
                 *Utc          1   表示的时间为 UTC。
                 *Local        2   表示的时间为本地时间
                 */
                DateTime date9 = new DateTime(2010, 8, 18, 16, 32, 0, DateTimeKind.Local);
                Console.WriteLine("日期:{0}
    DateTimeKind:{1}", date9, date9.Kind);
                /*
                 日期:2010/8/18 16:32:00
                  DateTimeKind:Local
                 */
    
                /*
                 *7.public DateTime (int year, int month, int day, int hour, int minute, int second, System.Globalization.Calendar calendar);
                 * DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar)
                 * 将 DateTime 结构的新实例初始化为指定日历的年、月、日、小时、分钟和秒。
                 * year:1-9999,month:0-12,day:1-moth中的天数,hour:0-23,minuye:0-59,second:0-59,
                 * calendar:用于解释 year、month 和 day 的日历。
                 */
    
                /*
                 *8.public DateTime (int year, int month, int day, int hour, int minute, int second, int millisecond);
                 * DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32)
                 * 将 DateTime 结构的新实例初始化为指定的年、月、日、小时、分钟、秒和毫秒。
                 * year:1-9999,month:0-12,day:1-moth中的天数,hour:0-23,minuye:0-59,second:0-59,millisecond:0-999
                 */
    
                DateTime date3 = new DateTime(2018, 9, 29, 13, 44, 30, 555);
                Console.WriteLine(date3.ToString("MM/dd/yyyy HH:mm:ss.fff tt"));
                /*09/29/2018 13:44:30.555 下午*/
    
                /*
                 * 9.public DateTime (int year, int month, int day, int hour, int minute, int second, int millisecond, DateTimeKind kind);
                 * DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)
                 * 将 DateTime 结构的新实例初始化为指定年、月、日、小时、分钟、秒、毫秒和协调世界时 (UTC) 或本地时间。   
                 * year:1-9999,month:0-12,day:1-moth中的天数,hour:0-23,minuye:0-59,second:0-59,millisecond:0-999
                 * kind:枚举值之一,该值指示 year、month、day、hour、minute、second 和 millisecond 指定了本地时间、
                 * 协调世界时 (UTC),还是两者皆未指定。
                 */
                DateTime date4 = new DateTime(2018, 9, 29, 13, 48, 30, 500, DateTimeKind.Local);
                Console.WriteLine("{0:M/dd/yyyy h:mm:ss.fff tt} {1}", date4, date4.Kind);
                /*
                 * 9/29/2018 1:48:30.500 下午 Local
                 */
    
                /*
                 * 10.public DateTime (int year, int month, int day, int hour, int minute, int second, int millisecond, System.Globalization.Calendar calendar);
                 * DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar)
                 * 将 DateTime 结构的新实例初始化为指定日历的指定年、月、日、小时、分钟、秒和毫秒。
                 * year:1-9999,month:0-12,day:1-moth中的天数,hour:0-23,minuye:0-59,second:0-59,millisecond:0-999
                 * calendar:用于解释 year、month 和 day 的日历
                 */
    
                /*
                 下面的示例调用DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar)构造函数两次实例化两个DateTime值。 第一次调用实例化DateTime通过使用值PersianCalendar对象。 由于波斯日历不能指定为区域性的默认日历,显示日期与波斯历需要单独调用其PersianCalendar.GetMonth, PersianCalendar.GetDayOfMonth,和PersianCalendar.GetYear方法。 构造函数的第二个调用实例化DateTime通过使用值HijriCalendar对象。 该示例将当前区域性更改为阿拉伯语 (叙利亚) 和当前区域性的默认日历更改为回历。 因为回历是当前区域性的默认日历,Console.WriteLine方法使用它来设置日期格式。 还原先前的当前区域性 (这在此情况下是英语 (美国)) 时,Console.WriteLine方法使用当前区域性的默认公历日历来设置日期格式。
                 */
                Console.WriteLine("Using the Persian Calendar:");
                PersianCalendar persian2 = new PersianCalendar();
                DateTime date5 = new DateTime(1397, 3, 29, 16, 32, 18, 500, persian2);
                Console.WriteLine(date5.ToString("M/dd/yyyy h:mm:ss.fff tt"));
                Console.WriteLine("{0}/{1}/{2} {3}{7}{4:D2}{7}{5:D2}.{6:G3}
    ",
                                                 persian2.GetMonth(date5),
                                                 persian2.GetDayOfMonth(date5),
                                                 persian2.GetYear(date5),
                                                 persian2.GetHour(date5),
                                                 persian2.GetMinute(date5),
                                                 persian2.GetSecond(date5),
                                                 persian2.GetMilliseconds(date5),
                                                 DateTimeFormatInfo.CurrentInfo.TimeSeparator);
    
                Console.WriteLine("Using the Hijri Calendar:");
                // Get current culture so it can later be restored.
                CultureInfo dftCulture2 = Thread.CurrentThread.CurrentCulture;
    
                // Define strings for use in composite formatting.
                string dFormat2;
                string fmtString;
                // Define Hijri calendar.
                HijriCalendar hijri2 = new HijriCalendar();
                // Make ar-SY the current culture and Hijri the current calendar.
                Thread.CurrentThread.CurrentCulture = new CultureInfo("ar-SY");
                CultureInfo current2 = CultureInfo.CurrentCulture;
                current2.DateTimeFormat.Calendar = hijri2;
                dFormat2 = current.DateTimeFormat.ShortDatePattern;
                // Ensure year is displayed as four digits.
                dFormat2 = Regex.Replace(dFormat2, "/yy$", "/yyyy") + " H:mm:ss.fff";
                fmtString = "{0} culture using the {1} calendar: {2:" + dFormat2 + "}";
                DateTime date6 = new DateTime(1431, 9, 9, 16, 32, 18, 500, hijri2);
                Console.WriteLine(fmtString, current2, GetCalendarName(hijri2), date6);
    
                // Restore previous culture.
                Thread.CurrentThread.CurrentCulture = dftCulture;
                dFormat2 = DateTimeFormatInfo.CurrentInfo.ShortDatePattern + " H:mm:ss.fff";
                fmtString = "{0} culture using the {1} calendar: {2:" + dFormat2 + "}";
                Console.WriteLine(fmtString,
                                  CultureInfo.CurrentCulture,
                                  GetCalendarName(CultureInfo.CurrentCulture.Calendar),
                                  date6);
    
                /*
                 Using the Persian Calendar:
                 6/19/2018 4:32:18.500 下午
                 3/29/1397 16:32:18.500
    
                 Using the Hijri Calendar:
                 ar-SY culture using the Hijri calendar: 09/09/1431 16:32:18.500
                 zh-CN culture using the Gregorian calendar: 2010/8/18 16:32:18.500
                 */
    
                /*
                 * 11.public DateTime (int year, int month, int day, int hour, int minute, int second, int millisecond, System.Globalization.Calendar calendar, DateTimeKind kind);
                 * DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind)
                 * 将 DateTime 结构的新实例初始化为指定日历的指定年、月、日、小时、分钟、秒、毫秒和协调世界时 (UTC) 或本地时间。
                 * year:1-9999,month:0-12,day:1-moth中的天数,hour:0-23,minuye:0-59,second:0-59,millisecond:0-999
                 * calendar:用于解释 year、month 和 day 的日历
                 * kind:枚举值之一,该值指示 year、month、day、hour、minute、second 和 millisecond 指定了本地时间、
                 * 协调世界时 (UTC),还是两者皆未指定。
                 */
                /*
                下面的示例调用DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind)构造函数两次实例化两个DateTime值。 第一次调用实例化DateTime通过使用值PersianCalendar对象。 由于波斯日历不能指定为区域性的默认日历,显示日期与波斯历需要单独调用其PersianCalendar.GetMonth, PersianCalendar.GetDayOfMonth,和PersianCalendar.GetYear方法。 构造函数的第二个调用实例化DateTime通过使用值HijriCalendar对象。 该示例将当前区域性更改为阿拉伯语 (叙利亚) 和当前区域性的默认日历更改为回历。 因为回历是当前区域性的默认日历,Console.WriteLine方法使用它来设置日期格式。 还原先前的当前区域性 (这在此情况下是英语 (美国)) 时,Console.WriteLine方法使用当前区域性的默认公历日历来设置日期格式。 
                */
                Console.WriteLine("Using the Persian Calendar:");
                PersianCalendar persian3 = new PersianCalendar();
                DateTime date7 = new DateTime(1397, 3, 29, 16, 32, 18, 500,
                                              persian3, DateTimeKind.Local);
                Console.WriteLine("{0:M/dd/yyyy h:mm:ss.fff tt} {1}", date7, date7.Kind);
                Console.WriteLine("{0}/{1}/{2} {3}{8}{4:D2}{8}{5:D2}.{6:G3} {7}
    ",
                                                 persian3.GetMonth(date7),
                                                 persian3.GetDayOfMonth(date7),
                                                 persian3.GetYear(date7),
                                                 persian3.GetHour(date7),
                                                 persian3.GetMinute(date7),
                                                 persian3.GetSecond(date7),
                                                 persian3.GetMilliseconds(date7),
                                                 date7.Kind,
                                                 DateTimeFormatInfo.CurrentInfo.TimeSeparator);
    
                Console.WriteLine("Using the Hijri Calendar:");
                // Get current culture so it can later be restored.
                CultureInfo dftCulture3 = Thread.CurrentThread.CurrentCulture;
    
                // Define strings for use in composite formatting.
                string dFormat3;
                string fmtString3;
                // Define Hijri calendar.
                HijriCalendar hijri3 = new HijriCalendar();
                // Make ar-SY the current culture and Hijri the current calendar.
                Thread.CurrentThread.CurrentCulture = new CultureInfo("ar-SY");
                CultureInfo current3 = CultureInfo.CurrentCulture;
                current3.DateTimeFormat.Calendar = hijri3;
                dFormat3 = current3.DateTimeFormat.ShortDatePattern;
                // Ensure year is displayed as four digits.
                dFormat3 = Regex.Replace(dFormat3, "/yy$", "/yyyy") + " H:mm:ss.fff";
                fmtString3 = "{0} culture using the {1} calendar: {2:" + dFormat3 + "} {3}";
                DateTime date8 = new DateTime(1431, 9, 9, 16, 32, 18, 500,
                                              hijri3, DateTimeKind.Local);
                Console.WriteLine(fmtString3, current3, GetCalendarName(hijri3),
                                  date8, date8.Kind);
    
                // Restore previous culture.
                Thread.CurrentThread.CurrentCulture = dftCulture3;
                dFormat3 = DateTimeFormatInfo.CurrentInfo.ShortDatePattern + " H:mm:ss.fff";
                fmtString3= "{0} culture using the {1} calendar: {2:" + dFormat3 + "} {3}";
                Console.WriteLine(fmtString3,
                                  CultureInfo.CurrentCulture,
                                  GetCalendarName(CultureInfo.CurrentCulture.Calendar),
                                  date8, date8.Kind);
                /*
                 Using the Persian Calendar:
                 6/19/2018 4:32:18.500 下午 Local
                 3/29/1397 16:32:18.500 Local
    
                 Using the Hijri Calendar:
                 ar-SY culture using the Hijri calendar: 09/09/1431 16:32:18.500 Local
                 zh-CN culture using the Gregorian calendar: 2010/8/18 16:32:18.500 Local
                 */
                Console.ReadKey();
            }
            private static string GetCalendarName(Calendar cal)
            {
                return Regex.Match(cal.ToString(), "\.(\w+)Calendar").Groups[1].Value;
            }
        }
    }
  • 相关阅读:
    开始写游戏 --- 第十一篇
    开始写游戏 --- 第十篇
    开始写游戏 --- 第九篇
    CDN的原理以及其中的一些技术
    深入理解Redis主键失效原理及实现机制
    使用 Redis 实现分布式系统轻量级协调技术
    Redis实现分布式锁
    进程线程协程
    类加载机制
    消息队列
  • 原文地址:https://www.cnblogs.com/HapetyPing/p/9728011.html
Copyright © 2011-2022 走看看