Tính toán ngày trong tương lai hoặc quá khứ

C#:
Tính toán ngày trong tương lai hoặc quá khứ

Cách thực hiện:

Tính toán ngày trong tương lai:

using System;

class DateExample
{
    static void Main()
    {
        DateTime currentDate = DateTime.Now;
        TimeSpan oneWeek = TimeSpan.FromDays(7);
        
        DateTime nextWeek = currentDate + oneWeek;
        Console.WriteLine($"Một tuần từ bây giờ: {nextWeek}");
    }
}

Kết quả:

Một tuần từ bây giờ: <ngày sau một tuần từ ngày hiện tại>

Tính toán ngày trong quá khứ:

using System;

class DateExample
{
    static void Main()
    {
        DateTime currentDate = DateTime.Now;
        TimeSpan tenDaysAgo = TimeSpan.FromDays(-10);
        
        DateTime pastDate = currentDate + tenDaysAgo;
        Console.WriteLine($"Mười ngày trước là: {pastDate}");
    }
}

Kết quả:

Mười ngày trước là: <ngày mười ngày trước từ ngày hiện tại>

Sâu hơn nữa

Trong C#, DateTimeTimeSpan là nền tảng cho các thao tác về ngày và thời gian. DateTime đại diện cho một khoảnh khắc trong thời gian, thường được biểu thị dưới dạng ngày và giờ của ngày. TimeSpan đại diện cho một khoảng thời gian.

Trong lịch sử, các phép toán về ngày và giờ thường dễ mắc lỗi do việc xử lý thủ công các ngày, tháng, và năm nhuận. DateTime tóm gọn những phức tạp này, cho phép framework xử lý các phần khó khăn.

Các lựa chọn thay thế cho DateTimeTimeSpan trong .NET bao gồm DateTimeOffset, bao gồm độ lệch múi giờ, làm cho nó tốt hơn cho các ứng dụng hoạt động qua các múi giờ. Một lựa chọn khác là Noda Time, một thư viện được thiết kế bởi Jon Skeet dành cho việc xử lý ngày và giờ phức tạp hơn, như sử dụng các lịch khác nhau.

Về mặt thực hiện, khi bạn thêm một TimeSpan vào một DateTime, bên dưới nó đang thao tác với các tick, đơn vị cơ bản của thời gian trong .NET (1 tick = 100 nanô giây). Đối với các ngày trong quá khứ, một TimeSpan âm sẽ giải quyết vấn đề.

Xem thêm