C# में TimeSpan संरचना समय अवधि बनाने के लिए कई स्थैतिक फैक्टरी मेथड्स (From*) प्रदान करती है। ये मेथड्स विभिन्न समय इकाइयों (दिन, घंटे, मिनट, सेकंड, मिलीसेकंड, टिक्स) से TimeSpan ऑब्जेक्ट बनाते हैं।
उपलब्ध From* मेथड्स
| मेथड | पैरामीटर | विवरण |
|---|---|---|
FromDays(double) | दिन (भिन्नात्मक) | दिनों से TimeSpan |
FromHours(double) | घंटे (भिन्नात्मक) | घंटों से TimeSpan |
FromMinutes(double) | मिनट (भिन्नात्मक) | मिनटों से TimeSpan |
FromSeconds(double) | सेकंड (भिन्नात्मक) | सेकंड से TimeSpan |
FromMilliseconds(double) | मिलीसेकंड (भिन्नात्मक) | मिलीसेकंड से TimeSpan |
FromTicks(long) | टिक्स (100ns इकाइयां) | टिक्स से TimeSpan |
उदाहरण
using System;
public class Demo
{
public static void Main()
{
// विभिन्न From* मेथड्स
TimeSpan t1 = TimeSpan.FromDays(1); // 1 दिन
TimeSpan t2 = TimeSpan.FromHours(1); // 1 घंटा
TimeSpan t3 = TimeSpan.FromMinutes(1); // 1 मिनट
TimeSpan t4 = TimeSpan.FromSeconds(1); // 1 सेकंड
TimeSpan t5 = TimeSpan.FromMilliseconds(1); // 1 मिलीसेकंड
TimeSpan t6 = TimeSpan.FromTicks(10000000); // 1 सेकंड (10M टिक्स)
Console.WriteLine("TimeSpan.From* मेथड्स:");
Console.WriteLine(new string('-', 40));
Console.WriteLine($"FromDays(1): {t1}");
Console.WriteLine($"FromHours(1): {t2}");
Console.WriteLine($"FromMinutes(1): {t3}");
Console.WriteLine($"FromSeconds(1): {t4}");
Console.WriteLine($"FromMilliseconds(1): {t5}");
Console.WriteLine($"FromTicks(10000000): {t6}");
// भिन्नात्मक मान
Console.WriteLine("\nभिन्नात्मक मान:");
Console.WriteLine($"FromDays(1.5): {TimeSpan.FromDays(1.5)}"); // 1.12:00:00
Console.WriteLine($"FromHours(2.5): {TimeSpan.FromHours(2.5)}"); // 02:30:00
Console.WriteLine($"FromMinutes(90.5): {TimeSpan.FromMinutes(90.5)}"); // 01:30:30
Console.WriteLine($"FromSeconds(1.5): {TimeSpan.FromSeconds(1.5)}"); // 00:00:01.500
}
}
आउटपुट
TimeSpan.From* मेथड्स: ---------------------------------------- FromDays(1): 1.00:00:00 FromHours(1): 01:00:00 FromMinutes(1): 00:01:00 FromSeconds(1): 00:00:01 FromMilliseconds(1): 00:00:00.0010000 FromTicks(10000000): 00:00:01 भिन्नात्मक मान: FromDays(1.5): 1.12:00:00 FromHours(2.5): 02:30:00 FromMinutes(90.5): 01:30:30 FromSeconds(1.5): 00:00:01.5000000
व्यावहारिक उदाहरण
using System;
public class Demo
{
public static void Main()
{
// कॉन्फिगरेशन से टाइमआउट बनाना
int timeoutMinutes = 30;
TimeSpan timeout = TimeSpan.FromMinutes(timeoutMinutes);
Console.WriteLine($"टाइमआउट: {timeout}");
// रिट्री डिले
double retryDelaySeconds = 2.5;
TimeSpan retryDelay = TimeSpan.FromSeconds(retryDelaySeconds);
Console.WriteLine($"रिट्री डिले: {retryDelay}");
// कैश समाप्ति
int cacheHours = 24;
TimeSpan cacheExpiry = TimeSpan.FromHours(cacheHours);
Console.WriteLine($"कैश समाप्ति: {cacheExpiry}");
// बेंचमार्किंग
long elapsedTicks = 1234567890;
TimeSpan elapsed = TimeSpan.FromTicks(elapsedTicks);
Console.WriteLine($"बीता समय: {elapsed}");
// दो TimeSpan की तुलना
TimeSpan t1 = TimeSpan.FromMinutes(5);
TimeSpan t2 = TimeSpan.FromSeconds(300); // 5 मिनट = 300 सेकंड
Console.WriteLine($"\nt1 (5 मिनट): {t1}");
Console.WriteLine($"t2 (300 सेकंड): {t2}");
Console.WriteLine($"समान: {t1 == t2}"); // True
}
}
आउटपुट
टाइमआउट: 00:30:00 रिट्री डिले: 00:00:02.5000000 कैश समाप्ति: 1.00:00:00 बीता समय: 14.06:56:18.9000000 t1 (5 मिनट): 00:05:00 t2 (300 सेकंड): 00:05:00 समान: True
पारंपरिक कंस्ट्रक्टर बनाम From* मेथड्स
// कंस्ट्रक्टर (पैरामीटर्स: दिन, घंटे, मिनट, सेकंड, मिलीसेकंड)
TimeSpan c1 = new TimeSpan(1, 2, 30, 45, 500); // 1.02:30:45.500
// From* मेथड्स (अधिक पठनीय और लचीले)
TimeSpan f1 = TimeSpan.FromDays(1) + TimeSpan.FromHours(2) +
TimeSpan.FromMinutes(30) + TimeSpan.FromSeconds(45) +
TimeSpan.FromMilliseconds(500);
Console.WriteLine(c1 == f1); // True
महत्वपूर्ण बिंदु
- सभी
From*मेथड्सdoubleपैरामीटर लेते हैं (FromTicks को छोड़कर जोlongलेता है) - भिन्नात्मक मान स्वचालित रूप से छोटी इकाइयों में बदल जाते हैं
FromDays(1.5)= 1 दिन + 12 घंटे- ऋणात्मक मान ऋणात्मक TimeSpan बनाते हैं
- बहुत बड़े मानों के लिए
OverflowExceptionसंभव है - पठनीयता के लिए कंस्ट्रक्टर के बजाय
From*मेथड्स पसंद करें