เมธอด TimeSpan.FromHours() ใน C# เป็น static factory method ใช้สร้าง TimeSpan ที่แทนจำนวนชั่วโมงที่ระบุ โดยมีความแม่นยำถึงมิลลิวินาที (nearest millisecond)
รูปแบบไวยากรณ์ (Syntax)
public static TimeSpan FromHours(double value);
value: จำนวนชั่วโมง (double) รองรับทศนิยม เช่น 1.5 = 1 ชม. 30 นาที- คืนค่า : TimeSpan ที่เทียบเท่า
ตัวอย่างที่ 1: จาก Days, Negative TimeSpan, Hours
using System;
public class Demo
{
public static void Main()
{
TimeSpan span1 = TimeSpan.FromDays(0.000323456); // ~27.9 วินาที
TimeSpan span2 = new TimeSpan(-2, 5, 10); // -2 ชม. 5 นาที 10 วินาที
TimeSpan span3 = TimeSpan.FromHours(5); // 5 ชม.
Console.WriteLine("span1 = " + span1);
Console.WriteLine("span2 = " + span2);
Console.WriteLine("span3 = " + span3);
Console.WriteLine("Compare(span1, span2) = " + TimeSpan.Compare(span1, span2)); // 1
Console.WriteLine("Compare(span2, span3) = " + TimeSpan.Compare(span2, span3)); // -1
}
}
ผลลัพธ์
span1 = 00:00:27.9470000 span2 = -02:05:10 span3 = 05:00:00 Compare(span1, span2) = 1 Compare(span2, span3) = -1
ตัวอย่างที่ 2: จาก Days, TimeSpan Constructor, Hours
using System;
public class Demo
{
public static void Main()
{
TimeSpan span1 = TimeSpan.FromDays(15); // 15 วัน
TimeSpan span2 = new TimeSpan(5, 15, 30); // 5 ชม. 15 นาที 30 วินาที
TimeSpan span3 = TimeSpan.FromHours(5); // 5 ชม.
Console.WriteLine("span1 = " + span1);
Console.WriteLine("span2 = " + span2);
Console.WriteLine("span3 = " + span3);
Console.WriteLine("Compare(span1, span2) = " + TimeSpan.Compare(span1, span2)); // 1
Console.WriteLine("Compare(span2, span3) = " + TimeSpan.Compare(span2, span3)); // 1
Console.WriteLine("Compare(span1, span3) = " + TimeSpan.Compare(span1, span3)); // 1
}
}
ผลลัพธ์
span1 = 15.00:00:00 span2 = 05:15:30 span3 = 05:00:00 Compare(span1, span2) = 1 Compare(span2, span3) = 1 Compare(span1, span3) = 1
Factory Methods ของ TimeSpan (ครบชุด)
| เมธอด | พารามิเตอร์ | ตัวอย่าง |
|---|---|---|
FromDays(double) |
วัน | FromDays(1.5) = 1.12:00:00 |
FromHours(double) |
ชั่วโมง | FromHours(2.5) = 02:30:00 |
FromMinutes(double) |
นาที | FromMinutes(90) = 01:30:00 |
FromSeconds(double) |
วินาที | FromSeconds(3661) = 01:01:01 |
FromMilliseconds(double) |
มิลลิวินาที | FromMilliseconds(1500) = 00:00:01.500 |
FromTicks(long) |
Ticks (100ns) | FromTicks(10000000) = 00:00:01 |
Constructor ของ TimeSpan
new TimeSpan(days, hours, minutes, seconds); new TimeSpan(days, hours, minutes, seconds, milliseconds); new TimeSpan(ticks); // long
สรุป
- FromHours() รับ double - รองรับ fractional hours (เช่น 1.5 ชม. = 1 ชม. 30 นาที)
- ความแม่นยำถึงมิลลิวินาที (round to nearest millisecond)
- ค่าลบได้:
TimeSpan.FromHours(-2.5)= -02:30:00 - ใช้แทน Constructor เมื่อต้องการสร้างจากหน่วยเดียว (อ่านง่ายกว่า)
- Static method - เรียกผ่าน Type:
TimeSpan.FromHours(5)
ตัวอย่างการใช้งานจริง
// Config timeout จากชั่วโมง double timeoutHours = 2.5; TimeSpan timeout = TimeSpan.FromHours(timeoutHours); // ใช้กับ Task.Delay, HttpClient.Timeout, ฯลฯ await Task.Delay(timeout); client.Timeout = timeout;