C# Academy · 课时

日期运算

添加、减去并比较日期。

第 4 / 4 课13 个步骤

日期运算 是 CoddyKit 上的免费 C# Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 4 节课。

对日期进行运算

DateTime 值是不可变的:运算不会改变原始值。相反,每次运算都会返回一个全新的 DateTime。

本课将介绍如何添加和减去时间、比较日期,以及回答“距离某个事件还有多少天”等问题。

AddDays

AddDays 方法会返回晚若干天的日期。传入负数即可向过去移动。

由于 DateTime 是不可变的,您必须使用返回的值;原始值不会发生变化。

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5);
        DateTime later = d.AddDays(10);
        Console.WriteLine(later.ToString("yyyy-MM-dd"));
    }
}

Add 方法族

每个时间单位都有对应的 Add 方法:AddHours、AddMinutes、AddSeconds、AddMonths 和 AddYears。

它们都接受正数或负数,因此同一组方法既可以处理未来,也可以处理过去。

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
        Console.WriteLine(d.AddHours(5).Hour);
    }
}

AddMonths 处理溢出

AddMonths 会智能处理每月天数。将 1 月 31 日加上一个月会得到 2 月 28 日或 29 日,而不会得到无效日期。

这样就不必手动检查每个月有多少天。

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 1, 31);
        Console.WriteLine(d.AddMonths(1).ToString("yyyy-MM-dd"));
    }
}

向过去移动

要移动到过去,请传入负参数。AddDays(-7) 会得到早一周的日期。

没有单独的减天数方法;使用负值就能简洁地实现相同效果。

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5);
        Console.WriteLine(d.AddDays(-7).ToString("yyyy-MM-dd"));
    }
}

添加 TimeSpan

您可以使用 + 运算符或 Add 方法,直接将 TimeSpan 添加到 DateTime。

当您已经有一个持续时间,并希望据此调整日期时,这种方式非常方便。

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
        DateTime later = d + TimeSpan.FromHours(3);
        Console.WriteLine(later.Hour);
    }
}

日期之间的差值

从一个日期中减去另一个日期,会得到描述两者间隔的 TimeSpan。

读取 TotalDays 即可计算它们相差的天数,即使两个日期跨越了月份或年份也适用。

using System;

class Program
{
    static void Main()
    {
        DateTime start = new DateTime(2024, 1, 1);
        DateTime end = new DateTime(2024, 3, 1);
        Console.WriteLine((end - start).TotalDays);
    }
}

距事件还有多少天

一个常见任务是计算距离未来某个日期还有多少天。用目标日期减去今天,然后读取 TotalDays 或 Days。

在这里使用固定日期,可以让学习过程中的输出保持可预测。

using System;

class Program
{
    static void Main()
    {
        DateTime today = new DateTime(2024, 3, 1);
        DateTime party = new DateTime(2024, 3, 15);
        Console.WriteLine((party - today).Days);
    }
}

比较日期

DateTime 值可以使用 <、> 和 == 进行比较。较早的日期小于较晚的日期。

如果需要正式的比较结果,还可以使用 CompareTo 和 Equals 等方法。

using System;

class Program
{
    static void Main()
    {
        DateTime a = new DateTime(2024, 1, 1);
        DateTime b = new DateTime(2024, 6, 1);
        Console.WriteLine(a < b);
    }
}

闰年和月份天数

两个静态辅助方法可以回答日历相关的问题。DateTime.IsLeapYear(year) 会在年份为闰年时返回真值。

DateTime.DaysInMonth(year, month) 会告诉您指定月份有多少天,并正确处理二月。

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine(DateTime.IsLeapYear(2024));
        Console.WriteLine(DateTime.DaysInMonth(2024, 2));
    }
}

一天的开始与结束

要获取一天的开始时间,请使用 Date 属性;它会将时间截去并设为午夜。

要获取一天的最后时刻,可以先加一天再减去一个刻度,或者加上 23:59:59。Date 属性是最简单的基础。

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
        Console.WriteLine(d.Date.ToString("yyyy-MM-dd HH:mm"));
    }
}

快速检查

从 2024 年 1 月 31 日开始并调用 AddMonths(1),您会得到什么日期?

回顾

DateTime 运算会返回新值。使用 AddDays、AddMonths 及其他类似方法调整日期,使用负数即可向过去移动。

相减日期可以得到 TimeSpan,使用运算符进行比较,并使用 IsLeapYear、DaysInMonth 和 Date 完成日历相关任务。

免费开始

用 AI 导师学习 C# — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
93
课程
346

常见问题解答

「日期运算」课时是免费的吗?

是的 — 「日期运算」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 4 节课。

「日期运算」这节课中我会学到什么?

添加、减去并比较日期。 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C# Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「日期运算」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C# Academy 课中编写并运行代码吗?

能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 创建 DateTimes
  2. 格式化日期
  3. TimeSpan 与持续时间
  4. 日期运算
← 返回 C# Academy