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

Phương thức TimeSpan.Add() trong C#

Phương thức TimeSpan.Add() trong C# được dùng để trả về một đối tượng TimeSpan mới có giá trị là tổng của instance hiện tại và TimeSpan được chỉ định.

Cú pháp

public TimeSpan Add(TimeSpan ts);
  • ts: Khoảng thời gian cần cộng thêm.

Trả về: TimeSpan mới = this + ts.

Ví dụ 1: Cộng các TimeSpan dương

using System;

public class Demo
{
    public static void Main()
    {
        TimeSpan span1 = new TimeSpan(2, 17, 20, 30); // 2 ngày 17:20:30
        TimeSpan span2 = new TimeSpan(3, 18, 25, 25); // 3 ngày 18:25:25
        TimeSpan span3 = new TimeSpan(-8, 30, 0);     // -8 giờ 30 phút

        TimeSpan res1 = span1.Add(span2);
        TimeSpan res2 = span2.Add(span3);

        Console.WriteLine("span1 + span2 = " + res1);
        Console.WriteLine("span2 + span3 = " + res2);
    }
}

Kết quả

span1 + span2 = 6.11:45:55
span2 + span3 = 3.10:55:25

Ví dụ 2: Cộng TimeSpan âm và MinValue

using System;

public class Demo
{
    public static void Main()
    {
        TimeSpan span1 = new TimeSpan(-6, 25, 0);       // -6:25:00
        TimeSpan span2 = new TimeSpan(1, 11, 25, 20);   // 1.11:25:20
        TimeSpan span3 = TimeSpan.MinValue;              // -10675199.02:48:05.4775808

        TimeSpan res1 = span1.Add(span2);
        TimeSpan res2 = span2.Add(span3);

        Console.WriteLine("span1 + span2 = " + res1);
        Console.WriteLine("span2 + span3 = " + res2);
    }
}

Kết quả

span1 + span2 = 1.05:50:20
span2 + span3 = -10675197.15:22:45.4775808

Toán tử cộng (+) cho TimeSpan

C# hỗ trợ toán tử + cho TimeSpan (từ C# 7.3 cho struct):

TimeSpan a = TimeSpan.FromHours(2);
TimeSpan b = TimeSpan.FromMinutes(30);
TimeSpan c = a + b; // 2.5 giờ = 02:30:00

Các phương thức cộng/trừ liên quan

Phương thức/Toán tử Mô tả Ví dụ
Add(ts) Cộng ts, trả về TimeSpan mới a.Add(b)
+ (toán tử) Cộng, cú pháp tự nhiên a + b
Subtract(ts) Trừ ts, trả về TimeSpan mới a.Subtract(b)
- (toán tử) Trừ, cú pháp tự nhiên a - b
Negate() Đảo dấu a.Negate()

Xử lý tràn (Overflow)

  • Nếu kết quả vượt quá TimeSpan.MaxValue hoặc TimeSpan.MinValue, ném OverflowException.
  • TimeSpan.MaxValue ≈ 10.675.199 ngày.
try
{
    TimeSpan max = TimeSpan.MaxValue;
    TimeSpan oneDay = TimeSpan.FromDays(1);
    TimeSpan result = max.Add(oneDay); // OverflowException
}
catch (OverflowException)
{
    Console.WriteLine("Vượt quá phạm vi TimeSpan!");
}

Lưu ý

  • Add không thay đổi instance gốc (TimeSpan là struct bất biến).
  • Hỗ trợ TimeSpan âm (kết quả có thể âm).
  • Dùng TimeSpan.FromDays/Hours/Minutes/Seconds/Milliseconds/Ticks để tạo dễ dàng.