龙空技术网

C#编程零基础到入门学习-日期和时间(DateTime)(4-7)

天道格律随笔 215

前言:

此刻兄弟们对“7月份等于多少天”大约比较关心,看官们都想要知道一些“7月份等于多少天”的相关内容。那么小编在网络上网罗了一些有关“7月份等于多少天””的相关知识,希望朋友们能喜欢,各位老铁们快快来了解一下吧!

C#包含DateTime可处理日期和时间的结构。

要在C#中使用日期和时间,请使用 new 关键字创建 DateTime 结构的对象。

下面创建一个具有默认值的 DateTime 对象。

创建DateTime对象:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DateTime1{    internal class Program    {        static void Main(string[] args)        {            DateTime dt = new DateTime(); // 分配默认值 01/01/0001 00:00:00            Console.WriteLine(dt.ToString());        }    }}

DateTime 对象的默认值和最小值是0001年1月1日00:00:00(午夜)最大值可以是9999年12月31日晚上11:59:59

使用 DateTime 结构的不同构造函数为 DateTime 对象分配初始值。

设置日期和时间:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace SetDateTime{    internal class Program    {        static void Main(string[] args)        {            //分配默认值01/01/0001 00:00:00            DateTime dt1 = new DateTime();            //分配年,月,日            DateTime dt2 = new DateTime(2019, 12, 31);            //分配年,月,日, hour, min, seconds            DateTime dt3 = new DateTime(2020, 12, 31, 5, 10, 20);            //分配年,月,日, hour, min, seconds, UTC timezone:时区            DateTime dt4 = new DateTime(2022, 12, 31, 5, 10, 20, DateTimeKind.Utc);            Console.WriteLine(dt1);            Console.WriteLine(dt2);            Console.WriteLine(dt3);            Console.WriteLine(dt4);        }    }}

上述代码都是源代码,可以自己尝试修改,看看效果,尽可能自己敲出来,而不是复制粘贴。

运行结果

注意:在构造函数中指定了年,月和日。年份可以是0001到9999,月份可以是1到12,日期可以是1到31。超出这些范围设置任何其他值都将导致运行时异常。如下所示:

未经处理的异常: System.ArgumentOutOfRangeException: 年、月和日参数描述无法表示的 DateTime。在 System.DateTime.DateToTicks(Int32 year, Int32 month, Int32 day)在 System.DateTime..ctor(Int32 year, Int32 month, Int32 day)在 SetDateTime.Program.Main(String[] args) 位置

错误代码示例:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace SetDateTime{    internal class Program    {        static void Main(string[] args)        {            //分配默认值01/01/0001 00:00:00            DateTime dt1 = new DateTime();            //分配年,月,日            DateTime dt2 = new DateTime(2019, 12, 31);            //分配年,月,日, hour, min, seconds            DateTime dt3 = new DateTime(2020, 12, 31, 5, 10, 20);            //分配年,月,日, hour, min, seconds, UTC timezone            DateTime dt4 = new DateTime(2022, 12, 31, 5, 10, 20, DateTimeKind.Utc);            DateTime dt5 = new DateTime(10000, 12, 31);//报错代码大于9999了            Console.WriteLine(dt1);            Console.WriteLine(dt2);            Console.WriteLine(dt3);            Console.WriteLine(dt4);            Console.WriteLine(dt5);        }    }}//年份可以是0001到9999,月份可以是1到12,日期可以是1到31。//超出这些范围设置任何其他值都将导致运行时异常
Ticks(时间戳)

Ticks通常指的是从某个参考时间点开始计算的时间间隔,单位是毫秒或纳秒。Ticks可以用来表示一个特定时间点,比如1970年1月1日午夜以来经过的毫秒数。Ticks通常用于记录事件的发生时间或计算时间间隔。

示例代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DateTimeTicks{    internal class Program    {        static void Main(string[] args)        {            DateTime dt = new DateTime(636370000000000000);            Console.WriteLine(DateTime.MinValue.Ticks);//ticks 最小值            Console.WriteLine(DateTime.MaxValue.Ticks);// ticks 最大值        }    }}//在要C#中使用System.DateTime.Now.Ticks测试一项操作花的时间.//long start l = (System.DateTime.Now.Ticks - 621355968000000000) / 10000;//1970/01/01 00:00:01 到现在经过的毫秒数

最大值和最小值

示例代码2:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DateTimeTicks{    internal class Program    {        static void Main(string[] args)        {            DateTime centuryBegin = new DateTime(2000, 1, 1);            DateTime currentDate = DateTime.Now;            Console.WriteLine(centuryBegin);            Console.WriteLine(currentDate);//系统当前时间        }    }}
注解

一个计时周期表示一百纳秒,即一千万分之一秒。 一毫秒内有 10,000 个时钟周期 () TicksPerMillisecond 和 1000 万个时钟周期在一秒内。

此属性的值表示公历中自公历 1 月 1 日午夜 12:00:00:00 以来经过的 100 纳秒间隔的数目,该间隔表示 MinValue。 它不包括由闰秒引起的滴答数。 如果 DateTime 对象的 Kind 属性设置为 Local,则其计时周期表示自当前时区设置指定的本地时间 0001 年 1 月 1 日午夜 12:00:00 以来经过的时间。 DateTime如果 对象的 Kind 属性设置为 Utc,则其计时周期表示自协调世界时 1 月 1 日午夜 12:00:00 以来经过的时间。0001 年 1 月 1 日。 DateTime如果 对象的 Kind 属性设置为 Unspecified,则其计时周期表示自未知时区中自 1 月 1 日午夜 12:00:00 以来经过的时间。

时间戳(timestamp)是指某个特定时间点的标识,通常以数字表示。在计算机科学和编程中,时间戳常用来记录事件的发生时间、计算时间间隔或进行时间的比较和排序。 时间戳可以是相对时间戳或绝对时间戳。相对时间戳表示一个时间点相对于另一个时间点的时间间隔,通常以毫秒或纳秒为单位。绝对时间戳是指从一个固定的参考时间点(如UNIX纪元时间,即1970年1月1日午夜)开始计算的时间间隔,通常以秒为单位。

现行公历即格里历,又译国瑞历、额我略历、格列高利历、格里高利历,称公元。是由意大利医生兼哲学家里利乌斯(Aloysius Lilius)改革儒略历制定的历法,由教皇格列高利十三世在1582年颁行.

关于历法不在本文范围,请见谅,有兴趣的可以自行查找资料。

DateTime 静态字段

字段暂时还没有写到,后面会专门写关于字段的内容,这里主要还是以DateTime类型为主的一些相关知识。

DateTime结构包括静态字段,属性和方法。

下面的示例重要的静态字段和属性代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DateTimeStaticeField{    internal class Program    {        static void Main(string[] args)        {            DateTime currentDateTime = DateTime.Now;  //返回当前日期和时间            DateTime todaysDate = DateTime.Today; // 返回今天的日期            DateTime currentDateTimeUTC = DateTime.UtcNow;// 返回当前UTC日期和时间            DateTime maxDateTimeValue = DateTime.MaxValue; // 返回DateTime的最大值            DateTime minDateTimeValue = DateTime.MinValue; // 返回DateTime的最小值            Console.WriteLine(currentDateTime);            Console.WriteLine(todaysDate);            Console.WriteLine(currentDateTimeUTC);            Console.WriteLine(maxDateTimeValue);            Console.WriteLine(minDateTimeValue);        }    }}//可以尝试运行看看结果,每次运行的结果都会不一样的。
时间跨度(TimeSpan)

TimeSpan是一种结构,用于以天,小时,分钟,秒和毫秒为单位表示时间。

结构当前还没有学到,不理解的可以跳过这个这部分,后面会专门学习结构,这里只是引出了这个概念。

示例代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DataTimeTimeSpan{    internal class Program    {        static void Main(string[] args)        {            DateTime dt = new DateTime(2023, 9, 7);            TimeSpan ts = new TimeSpan(24, 0, 0);//24个小时,就是增加了一天时间            DateTime newDate = dt.Add(ts);            Console.WriteLine(newDate);//2023/9/8 0:00:00        }    }}

两个日期相减会得出TimeSpan;

示例代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DataTimeTimeSpan{    internal class Program    {        static void Main(string[] args)        {            DateTime dt = new DateTime(2023, 9, 7);            TimeSpan ts = new TimeSpan(24, 0, 0);//24个小时,就是增加了一天时间            DateTime newDate = dt.Add(ts);            Console.WriteLine(newDate);//2023/9/8 0:00:00            DateTime dt1 = new DateTime(2023, 9, 7);            DateTime dt2 = new DateTime(2023, 9, 6);            DateTime dt3 = new DateTime(2022,9,7);            TimeSpan result = dt2.Subtract(dt1);//Subtract:减去 ,结果为-1.00:00:00            TimeSpan result2 = dt1.Subtract(dt3);            Console.WriteLine(result);            Console.WriteLine(result2);//365.00:00:00        }    }}
运算符

DateTime结构重载+,-,==!=,>,<,<=,>=运算符,简化日期的加法、减法和比较。这些使我们很容易处理日期。

示例代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DateTimeOperator{    internal class Program    {        static void Main(string[] args)        {            DateTime dt1 = new DateTime(2022, 12, 20);            DateTime dt2 = new DateTime(2021, 12, 31, 5, 10, 20);            TimeSpan time = new TimeSpan(10, 5, 25, 50);            Console.WriteLine(dt2 + time); // 2022/1/10 10:36:10            Console.WriteLine(dt2 - dt1); //353.18:49:40            Console.WriteLine(dt1 == dt2); //False            Console.WriteLine(dt1 != dt2); //True            Console.WriteLine(dt1 > dt2); //True            Console.WriteLine(dt1 < dt2); //False            Console.WriteLine(dt1 >= dt2); //True            Console.WriteLine(dt1 <= dt2);//False        }    }}

运行结果

将 DateTime 转换为 String

ToString	将 DateTime 值转换为当前区域性的指定格式的字符串。ToShortDateString	将 DateTime 值转换为当前区域内的短日期字符串(M/d/yyyy 模式)。ToShortTimeString	将 DateTime 值转换为当前区域性中的短时间字符串(h: mm: ss 模式)。ToLongDateString	将 DateTime 值转换为当前区域性的长日期字符串(dddd, MMMM d, yyyy 模式)。ToLongTimeString	将 DateTime 值转换为当前区域内的长时间字符串(h:mm:ss tt 模式)

示例代码:

转换 DateTime 为不同格式的字符串

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DateTimeToString{    internal class Program    {        static void Main(string[] args)        {            var dt = DateTime.Now;//没有指定类型,前面有Var的用法            Console.WriteLine("Date String Current Culture: " + dt.ToString("d"));            Console.WriteLine("MM/dd/yyyy Format: " + dt.ToString("MM/dd/yyyy"));            Console.WriteLine("dddd, dd MMMM yyyy Format: " + dt.ToString("dddd, dd MMMM yyyy"));            Console.WriteLine("MM/dd/yyyy h:mm tt Format: " + dt.ToString("MM/dd/yyyy h:mm tt"));            Console.WriteLine("MMMM dd Format:" + dt.ToString("MMMM dd"));            Console.WriteLine("HH:mm:ss Format: " + dt.ToString("HH:mm:ss"));            Console.WriteLine("hh:mm tt Format: " + dt.ToString("hh:mm tt"));            Console.WriteLine("Short Date String: " + dt.ToShortDateString());            Console.WriteLine("Long Date String: " + dt.ToLongDateString());            Console.WriteLine("Short Time String: " + dt.ToShortTimeString());            Console.WriteLine("Long Time String: " + dt.ToLongTimeString());        }    }}//运行结果每次都会不一样的
将字符串转换为DateTime

这段要是不能理解也可以跳过,但是方法很实用。

可以使用 Parse ()、 ParseExact ()、 TryParse ()和 TryParseExact ()方法,将有效的日期和时间字符串转换为 DateTime 对象。如果指定的字符串不是日期和时间的有效表示形式,Parse ()和 ParseExact ()方法将抛出异常。因此,建议使用 TryParse ()或 TryParseExact ()方法,因为如果字符串无效,它们将返回 false。

示例代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace StringToDateTime{    internal class Program    {        static void Main(string[] args)        {            var str = "7/9/2023";//正确示例            //var str = "32/9/2023";//错误示例不是datetime类型            DateTime dt;            var isValidDate = DateTime.TryParse(str, out dt);            if (isValidDate)                Console.WriteLine(dt);            else                Console.WriteLine($"{str}不是datetime类型");        }    }}// var str = "7/9/2023";//正确示例   //这两行代码可以换着注释,观察运行结果,为啥会报错 //var str = "32/9/2023";//错误示例不是datetime类型

标签: #7月份等于多少天