在 C# 中,DateTime 类是用来处理日期和时间的类

# 设置日期和时间

// 分配默认值 01/01/0001 00:00:00
DateTime dt1 = new DateTime();
Console.WriteLine(dt1); // 0001/1/1 0:00:00
// 分配年月日
DateTime dt2 = new DateTime(2024, 10, 30);
Console.WriteLine(dt2); // 2024/10/30 0:00:00
// 分配年月日,hour, min, seconds
DateTime dt3 = new DateTime(2024, 10, 30, 4, 16, 15);
Console.WriteLine(dt3); // 2024/10/30 4:16:15
// 分配年月日,hour, min, seconds, UTC timezone
DateTime dt4 = new DateTime(2024, 10, 30, 4, 16, 15, DateTimeKind.Utc);
Console.WriteLine(dt4); // 2024/10/30 4:16:15

# DateTime.Now

获取当前的日期和时间

# 属性

// 获取当前日期和时间
DateTime.Now // 2024/10/30 13:55:03
// 自公元 1 年 1 月 1 日午夜以来经过的以 100 纳秒为间隔的时间单位数
DateTime.Now.Ticks // 638658933030775760
// 获取当前日期的年份
DateTime.Now.Year // 2024
// 获取当前日期的月份
DateTime.Now.Month // 10
// 获取当前日期的天数
DateTime.Now.Day // 30
// 获取当前日期是星期几
DateTime.Now.DayOfWeek // Wednesday
// 获取当前日期是一年中的第几天
DateTime.Now.DayOfYear // 304
// 获取当前时间部分
DateTime.Now.TimeOfDay // 13:55:03.0785370

# 方法

// 将当前日期时间对象转换为字符串表示
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") // 2024-10-30 14:02:52
// 获取当前日期的短日期字符串表示(只包含日期部分)
DateTime.Now.ToShortDateString() // 2024/10/30
// 将指定的分钟数添加到当前时间中
DateTime.Now.AddMinutes(1) // 2024/10/30 14:03:52
// 将指定的小时数添加到当前时间中
DateTime.Now.AddHours(1) // 2024/10/30 15:02:52
// 将指定的天数添加到当前日期中
DateTime.Now.AddDays(1) // 2024/10/31 14:02:52
// 将指定的月份数添加到当前日期中
DateTime.Now.AddMonths(1) // 2024/11/30 14:02:52
// 将指定的年份数添加到当前日期中
DateTime.Now.AddYears(1) // 2025/10/30 14:02:52

# DateTime

# 属性

// 获取当前日期,时间部分为午夜
DateTime currentDate = DateTime.Today; // 2024/10/30 0:00:00
DateTime date = new DateTime(2024, 04, 16, 04, 15, 16); // 2024/4/16 4:15:16
// 获取自公元 1 年 1 月 1 日午夜以来经过的时间刻度数
long ticks = dateTime.Ticks; // 638488377160000000
// 获取日期的年份
int year = date.Year; // 2024
// 获取日期的月份
int month = date.Month; // 4
// 获取日期的天数
int day = date.Day; // 16
// 获取日期是星期几
int dayOfWeek = date.DayOfWeek; // Tuesday
// 获取日期是一年中的第几天
int dayOfYear = date.DayOfYear; // 107
// 获取时间部分
TimeSpan timeOfDay = dateTime.TimeOfDay; // 04:15:16
// 获取日期时间对象的 DateTimeKind 值,指示其表示的时间是本地时间、协调世界时 (UTC) 还是未指定的类型
DateTimeKind kind = dateTime.Kind; // Unspecified
DateTime date2 = DateTime.Now;
Console.WriteLine(date2.Kind); // Local

# 方法

// DateTime.Compare:比较两个日期的大小
DateTime date1 = new DateTime(2024, 10, 21);
DateTime date2 = new DateTime(2024, 10, 22);
int result = DateTime.Compare(date1, date2);
Console.WriteLine(result); // -1
// DateTime.Equals:检查两个日期是否相等
DateTime date1 = new DateTime(2024, 10, 21);
DateTime date2 = new DateTime(2024, 10, 21);
bool isEqual = DateTime.Equals(date1, date2);
Console.WriteLine(isEqual); // True
// DateTime.IsLeapYear:检查指定的年份是否为闰年
int year = 2024;
bool isLeapYear = DateTime.IsLeapYear(year);
Console.WriteLine(isLeapYear); // True
// DateTime.ToString:将日期时间对象转换为字符串表示
DateTime dateTime = new DateTime(2024, 10, 30, 4, 16, 0);
string dateString = dateTime.ToString("yyyy-MM-dd HH:mm:ss");
Console.WriteLine(dateString); // 2024-10-30 04:16:00
// DateTime.TryParse:尝试将字符串解析为 DateTime 对象,如果解析成功返回 true,否则返回 false
string dateString = "2024-10-30";
DateTime date;
bool success = DateTime.TryParse(dateString, out date);
if (success)
{
    Console.WriteLine(date); // 2024/10/30 0:00:00
}
else
{
    Console.WriteLine("Invalid date format");
}

# Ticks

DateTime dt = new DateTime(636370000000000000);
Console.WriteLine(DateTime.MinValue.Ticks); //ticks 最小值:0
Console.WriteLine(DateTime.MaxValue.Ticks); //ticks 最大值:3155378975999999999

# TimeSpan 时间跨度

DateTime dt = new DateTime(2024, 10, 30, 4, 16, 15);
TimeSpan ts = new TimeSpan(4, 16, 15);
DateTime newDate = dt.Add(ts);
Console.WriteLine(newDate); // 2024/10/30 8:32:30

两个日期相减会得出 TimeSpan

DateTime dt1 = new DateTime(2024, 10, 30, 8, 32, 30);
DateTime dt2 = new DateTime(2024, 10, 30, 4, 16, 15);
TimeSpan result1 = dt1.Subtract(dt2);
TimeSpan result2 = dt2.Subtract(dt1);
Console.WriteLine(result1); // 04:16:15
Console.WriteLine(result2); // -04:16:15

# 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 模式)