Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด TimeSpan.FromHours() ใน C# : สร้าง TimeSpan จากจำนวนชั่วโมง

เมธอด 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;