C# DateTime
C# DateTime
当需要处理 C# 中的日期和时间时,我们使用了 DateTime。
我们可以格式化日期和
DateTime 的值介于 0001 年 1 月 1 日午夜 12:00:00 和 12 月 11:59:59 PM 之间31, 9999 AD
这里我们将解释如何在 C# 中创建 DateTime。
我们有不同的方法来创建 DateTime 对象。 DateTime 对象具有 Time、Culture、Date、Localization、Milliseconds。
这里的代码显示了 DateTime 结构使用的各种构造函数来创建 DateTime 对象。
// From DateTime create the Date and Time
DateTime DOB= new DateTime(19, 56, 8, 12, 8, 12, 23);
// From String creation of DateTime
string DateString= "8/12/1956 7:10:24 AM";
DateTime dateFromString =
DateTime.Parse(DateString, System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine(dateFromString.ToString());
// Empty DateTime
DateTime EmpDateTime= new DateTime();
// Just date
DateTime OnlyDate= new DateTime(2002, 10, 18);
// DateTime from Ticks
DateTime OnlyTime= new DateTime(10000000);
// Localization with DateTime
DateTime DateTimewithKind = new DateTime(1976, 7, 10, 7, 10, 24, DateTimeKind.Local);
// DateTime with date, time and milliseconds
DateTime WithMilliseconds= new DateTime(2010, 12, 15, 5, 30, 45, 100);
C# 中 DateTime 的属性
DateTime 具有日期和时间属性。从 DateTime 中,我们可以找到日期和时间。 DateTime 还包含其他属性,例如 Hour、Minute、Second、Millisecond、Year、Month 和 Day。
DateTime 的其他属性是:
借助 DayOfWeek 属性,我们可以从一周中获取一天的名称。
要获取一年中的哪一天,我们将使用 DayOfYear 属性。
要获取 DateTime 中的时间,我们使用 TimeOfDay 属性。
Today 属性将返回具有今天值的 DateTime 对象。时间的值为12:00:00
Now 属性将返回具有当前日期和时间的 DateTime 对象。
DateTime 的 Utc 属性将返回协调世界时(UTC)。
一个刻度代表 DateTime 中的一百纳秒。 DateTime 的 Ticks 属性返回 DateTime 中的刻度数。
Kind 属性返回值,其中时间表示由实例完成,该值基于本地时间,协调世界时(UTC)。它还显示未指定的默认值。
这里以C#代码中DateTime属性的使用为例。
例子:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
class Program
{
static void Main(string[] args)
{
DateTime DateTimeProperty = new DateTime(1974, 7, 10, 7, 10, 24);
Console.WriteLine("Day:{0}", DateTimeProperty.Day);
Console.WriteLine("Month:{0}", DateTimeProperty.Month);
Console.WriteLine("Year:{0}", DateTimeProperty.Year);
Console.WriteLine("Hour:{0}", DateTimeProperty.Hour);
Console.WriteLine("Minute:{0}", DateTimeProperty.Minute);
Console.WriteLine("Second:{0}", DateTimeProperty.Second);
Console.WriteLine("Millisecond:{0}", DateTimeProperty.Millisecond);
Console.WriteLine("Day of Week:{0}", DateTimeProperty.DayOfWeek);
Console.WriteLine("Day of Year: {0}", DateTimeProperty.DayOfYear);
Console.WriteLine("Time of Day:{0}", DateTimeProperty.TimeOfDay);
Console.WriteLine("Tick:{0}", DateTimeProperty.Ticks);
Console.WriteLine("Kind:{0}", DateTimeProperty.Kind);
}
}
}
输出:
C# 中 DateTime 的加法和减法
DateTime 结构提供了在 DateTime 对象中加减日期和时间的方法。我们可以在 DateTime 结构中添加和减去 DateTime 对象中的日期。对于DateTime 中的Addition 和Subtraction,我们使用TimeSpan 结构。
对于Addition 和Subtraction,我们可以使用DateTime 对象中的Add 和Subtract 方法。首先,我们使用 Add 和 Subtract 方法创建具有日期和时间值的 TimeSpan。
这里我们正在创建一个代码,将添加 3 并从今天减去 30 天并显示控制台上的一天。
using System;
using System. Collections;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
class Program
{
static void Main(string[] args)
{
DateTime Day = DateTime.Now;
TimeSpan Month = new System.TimeSpan(30, 0, 0, 0);
DateTime aDayAfterAMonth = Day.Add(Month);
DateTime aDayBeforeAMonth = Day.Subtract(Month);
Console.WriteLine("{0:dddd}", aDayAfterAMonth);
Console.WriteLine("{0:dddd}", aDayBeforeAMonth);
}
}
}
DateTime 结构包含添加年、日、时、分、秒的方法。
使用 Add 方法向 DateTime 对象添加不同的组件。
// To Add the Years and Days
day.AddYears(2);
day.AddDays(12);
// Add Hours, Minutes, Seconds, Milliseconds, and Ticks
Day.AddHours(4.25);
day.AddMinutes(15);
day.AddSeconds(45);
day.AddMilliseconds(200);
day.AddTicks(5000);
DateTime 不包含减法方法。要减去 DateTime 的组件,我们将仅使用减法方法。例如: 如果我们需要从 DateTime 中减去 12 天,我们可以创建另一个具有 12 天的 DateTime 或 TimeSpan 对象。现在我们将从 DateTime 中减去这个对象。作为替代,我们还可以使用减号运算符从 DateTime 中减去 DateTime 或 TimeSpan。
现在我们将创建一个代码,通过它我们可以创建 DateTime 的对象并减去另一个 DateTime 和时间跨度的对象。在代码中,我们将仅显示从 DateTime 减去小时、天或其他组件。
DateTime DOB = new DateTime(2000, 10, 20, 12, 15, 45);
DateTime SubtractDate = new DateTime(2000, 2, 6, 13, 5, 15);
// Use the TimeSpan with 10 days, 2 hrs, 30 mins, 45 seconds, and 100 milliseconds
TimeSpan ts = new TimeSpan(10, 2, 30, 45, 100);
// Subtract the DateTime
TimeSpan Different = DOB.Subtract(SubtractDate);
Console.WriteLine(Different.ToString());
// Subtract the TimeSpan
DateTime Different2 = DOB.Subtract(ts);
Console.WriteLine(Different2.ToString());
// Subtract 10 Days by creating the object SubtractedDays
DateTime SubtractedDays = new DateTime(DOB.Year, DOB.Month, DOB.Day-10);
Console.WriteLine(SubtractedDays.ToString());
// Subtract hours, minutes, and seconds with creating the object HoursMinutesSeconds
DateTime HoursMinutesSeconds = new DateTime(DOB.Year, DOB.Month, DOB.Day, DOB.Hour-1, DOB.Minute-15, DOB.Second-15);
Console.WriteLine(HoursMinutesSeconds.ToString());
搜索月份中的天数
为了查找月份中的天数,我们使用了静态DaysInMonth 方法。这种搜索方法 [] 接受 1 到 12 之间的数字参数。
这里我们将编写一个代码,通过它我们将找出特定月份的天数。
在这里,我们将找出 2020 年 2 月的天数。输出为 28 天。
int NumberOfDays = DateTime.DaysInMonth(2004, 2);
Console.WriteLine(NumberOfDays);
使用相同的技术,我们可以找出一年中的总天数。为此,我们将使用 DaysInYear 方法。
private int DaysInYear(int year)
{
int DaysIN= 0;
for (int j = 1; j <= 12; j++)
{
DaysIN += DateTime.DaysInMonth(year, j);
}
return DaysIN;
}
C#中两个DateTime的比较
比较器静态方法用于比较两个datetime的对象。如果两个DateTime的对象相同,则结果为0。如果第一个DateTime较早,则结果为0,否则第一个DateTime将较晚。
现在我们将展示 C# 中两个 datetime 对象的比较。
using System;
using System. Collections;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
class Program
{
static void Main(string[] args)
{
DateTime DateOfFirst = new DateTime(2002, 10, 22);
DateTime DateOfSecond = new DateTime(2009, 8, 11);
int result1 = DateTime.Compare(DateOfFirst, DateOfSecond);
if (result1 < 0)
Console.WriteLine("Date of First is earlier");
else if (result1 == 0)
Console.WriteLine("Both dates are same");
else
Console.WriteLine("Date of First is later");
}
}
}
输出:
CompareTo 方法
CompareTo 方法用于比较两个日期。我们将在此方法中分配 DateTime 或对象。
为了比较两个 DateTime 对象,我们使用了 CompareTo 方法。下面我们有一个 C# 代码来比较 DateTime 对象。
using System;
using System. Collections;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
class Program
{
static void Main(string[] args)
{
DateTime DateOfFirst = new DateTime(2001, 10, 20);
DateTime DateOfSecond = new DateTime(2009, 8, 11);
int ResultOfComparison = DateOfFirst.CompareTo(DateOfSecond);
if (ResultOfComparison < 0)
Console.WriteLine("Date Of First is Earlier");
else if (ResultOfComparison == 0)
Console.WriteLine("Date of Both are same");
else
Console.WriteLine("Date of First is Later");
}
}
}
输出:
C# 中 DateTime 的格式化
在 C# 中,我们可以根据需要将 DateTime 格式化为任何类型的字符串格式。
对于 DateTime 的格式化,我们使用了 GetDateTimeFormats 方法,该方法返回计算机当前文化的所有可能的 DateTime 格式。
这里我们有一个 C# 代码,它返回所有字符串的数组可能的标准格式。
using System;
using System. Collections;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
class Program
{
static void Main(string[] args)
{
DateTime DateOfMonth = new DateTime(2020, 02, 25);
string[] FormatsOfDate = DateOfMonth.GetDateTimeFormats();
foreach (string format in FormatsOfDate)
Console.WriteLine(format);
}
}
}
输出:
我们可以重载 GetDateTimeFormats 方法,它采用格式说明符作为参数并将 DateTime 转换为该格式。要获得所需的格式,我们需要了解 DateTime 说明符的格式。
我们将在表格中使用带有模式的代码来展示它。
代码 |
模式 |
"d" |
短日期 |
"D" |
长日期 |
"f" |
完整日期时间。很短的时间。 |
"F" |
完整日期时间。好久不见。 |
"g" |
生成日期时间。好久不见。 |
"G" |
一般日期时间。好久不见。 |
"M","m." |
月/日 |
"O","O" |
往返日期/时间。 |
"R","r" |
RFC1123 |
"s" |
可排序的日期时间。 |
"t" |
排序时间 |
"T" |
好久了 |
"你" |
通用可排序日期时间。 |
"U" |
通用完整日期时间。 |
"Y","y" |
年、月 |
我们将在下面的 C# 代码中指定 DateTime 的格式。
using System;
using System. Collections;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
class Program
{
static void Main(string[] args)
{
DateTime FormatOfDate = new DateTime(2020, 02, 25);
// DateTime Formats: d, D, f, F, g, G, m, o, r, s, t, T, u, U,
Console.WriteLine("----------------");
Console.WriteLine("d Formats");
Console.WriteLine("----------------");
string[] DateFormat = FormatOfDate.GetDateTimeFormats('d');
foreach (string format in DateFormat)
Console.WriteLine(format);
Console.WriteLine("----------------");
Console.WriteLine("D Formats");
Console.WriteLine("----------------");
DateFormat = FormatOfDate.GetDateTimeFormats('D');
foreach (string format in DateFormat)
Console.WriteLine(format);
Console.WriteLine("----------------");
Console.WriteLine("f Formats");
Console.WriteLine("----------------");
DateFormat = FormatOfDate.GetDateTimeFormats('f');
foreach (string format in DateFormat)
Console.WriteLine(format);
Console.WriteLine("----------------");
Console.WriteLine("F Formats");
Console.WriteLine("----------------");
DateFormat = FormatOfDate.GetDateTimeFormats('F');
foreach (string format in DateFormat)
Console.WriteLine(format);
}
}
}
输出:
我们也可以通过在 ToString 中传递格式说明符来对 DateTime 进行格式化() 方法的 DateTime。现在我们将使用 ToString() 方法编写用于格式化 DateTime 的 C# 代码。
Console.WriteLine(DateOfFormat.ToString("r"));
现在我们将为 ToString() 方法中的 DateTime 格式说明符编写 C# 代码。
获取闰年和夏令时
通过 C# 代码,我们将获取闰年和夏令时。
using System;
using System. Collections;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
class Program
{
static void Main(string[] args)
{
DateTime DateOfTime = new DateTime(2020, 02, 22);
Console.WriteLine(DateOfTime.IsDaylightSavingTime());
Console.WriteLine(DateTime.IsLeapYear(DateOfTime.Year));
}
}
}
输出:
将字符串转换为 DateTime
为了将字符串转换为 DateTime 对象,我们使用了 Parse 方法。在 Parse 方法中,传递的字符串必须具有正确的 DateTime 格式。对于 DateTime 到 String 的转换,使用了 ToString() 方法。
using System;
using System. Collections;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
class Program
{
static void Main(string[] args)
{
string DT = "2020-02-04T20:12:45-5:00";
DateTime NEWDt = DateTime.Parse(DT);
Console.WriteLine(NEWDt.ToString());
}
}
}
输出:
C#中DateTime的转换
DateTime的结构充满了不言自明的转换,就是将DateTime转换成具体的类型。方法有 ToFileTime、ToLocalTime、ToLongDateString、ToBinary、ToLongTimeString、ToOADate、ToShortDateString、ToShortTimeString、ToString 和 ToUniversalTime。
这里我们以 C# 为例,将 DateTime 转换为特定类型。
>
using System;
using System. Collections;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
class Program
{
static void Main(string[] args)
{
DateTime DOB = new DateTime(2020, 01, 22);
Console.WriteLine("ToString: " + DOB.ToString());
Console.WriteLine("ToBinary: " + DOB.ToBinary());
Console.WriteLine("ToFileTime: " + DOB.ToFileTime());
Console.WriteLine("ToLocalTime: " + DOB.ToLocalTime());
Console.WriteLine("ToLongDateString: " + DOB.ToLongDateString());
Console.WriteLine("ToLongTimeString: " + DOB.ToLongTimeString());
Console.WriteLine("ToOADate: " + DOB.ToOADate());
Console.WriteLine("ToShortDateString: " + DOB.ToShortDateString());
Console.WriteLine("ToShortTimeString: " + DOB.ToShortTimeString());
Console.WriteLine("ToUniversalTime: " + DOB.ToUniversalTime());
}
}
}
输出:

C#中的