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.MaxValuehoặcTimeSpan.MinValue, némOverflowException. 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 ý
Addkhô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.