Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Tìm hiệu 2 ngày (Date Difference) trong C#

Tính khoảng cách 2 ngày: DateTime trừ nhau ra TimeSpan. So sánh ngày: toán tử <, >, ==.

Ví dụ minh họa

using System;

class Program
{
    static void Main()
    {
        DateTime date1 = new DateTime(2018, 9, 15);
        DateTime date2 = new DateTime(2018, 9, 28);
        
        Console.WriteLine($"Date 1: {date1:dd/MM/yyyy}");
        Console.WriteLine($"Date 2: {date2:dd/MM/yyyy}");
        
        // Hiệu 2 ngày
        TimeSpan diff = date2 - date1;
        Console.WriteLine($"\nKhoảng cách: {diff.TotalDays} ngày");
        Console.WriteLine($"           {diff.Days} ngày {diff.Hours} giờ {diff.Minutes} phút");
        
        // So sánh
        if (date1 < date2)
            Console.WriteLine($"\n{date1:dd/MM/yyyy} trước {date2:dd/MM/yyyy}");
        else if (date1 > date2)
            Console.WriteLine($"\n{date1:dd/MM/yyyy} sau {date2:dd/MM/yyyy}");
        else
            Console.WriteLine("\nHai ngày trùng nhau");
        
        // Các tính toán khác
        Console.WriteLine($"\nThêm 10 ngày vào Date1: {date1.AddDays(10):dd/MM/yyyy}");
        Console.WriteLine($"Ngày trong tuần Date1: {date1.DayOfWeek}");
        Console.WriteLine($"Ngày trong năm Date1: {date1.DayOfYear}");
        
        // DateOnly (.NET 6+) - chỉ ngày, không giờ
        // var d1 = DateOnly.FromDateTime(date1);
        // var d2 = DateOnly.FromDateTime(date2);
        // int days = (d2 - d1).Days;
    }
}

Kết quả đầu ra

Date 1: 15/09/2018
Date 2: 28/09/2018

Khoảng cách: 13 ngày
           13 ngày 0 giờ 0 phút

15/09/2018 trước 28/09/2018

Thêm 10 ngày vào Date1: 25/09/2018
Ngày trong tuần Date1: Saturday
Ngày trong năm Date1: 258

Lưu ý: TimeSpan.TotalDays là double (có thể lẻ nếu có giờ/phút). TimeSpan.Days là int phần nguyên. .NET 6+ có DateOnly, TimeOnly cho date/time thuần túy.