C# में दो TimeSpan मानों को घटाने के लिए Subtract() मेथड या - ऑपरेटर का उपयोग किया जाता है। परिणाम एक नया TimeSpan होता है जो दोनों अवधियों का अंतर दर्शाता है।
उदाहरण
using System;
public class Demo
{
public static void Main()
{
// दो TimeSpan बनाएं
TimeSpan t1 = TimeSpan.FromMinutes(2); // 00:02:00
TimeSpan t2 = TimeSpan.FromMinutes(1); // 00:01:00
Console.WriteLine($"पहला TimeSpan: {t1}");
Console.WriteLine($"दूसरा TimeSpan: {t2}");
// विधि 1: Subtract() मेथड
TimeSpan result1 = t1.Subtract(t2);
// विधि 2: - ऑपरेटर (अधिक पठनीय)
TimeSpan result2 = t1 - t2;
Console.WriteLine($"\nSubtract() मेथड से परिणाम: {result1}");
Console.WriteLine($"- ऑपरेटर से परिणाम: {result2}");
Console.WriteLine($"दोनों समान: {result1 == result2}");
}
}
आउटपुट
पहला TimeSpan: 00:02:00 दूसरा TimeSpan: 00:01:00 Subtract() मेथड से परिणाम: 00:01:00 - ऑपरेटर से परिणाम: 00:01:00 दोनों समान: True
विभिन्न TimeSpan संक्रियाएं (पूर्ण)
using System;
public class Demo
{
public static void Main()
{
TimeSpan t1 = TimeSpan.FromHours(3); // 03:00:00
TimeSpan t2 = TimeSpan.FromMinutes(90); // 01:30:00
Console.WriteLine($"t1: {t1}");
Console.WriteLine($"t2: {t2}");
Console.WriteLine();
// जोड़
Console.WriteLine($"t1 + t2 = {t1 + t2}"); // 04:30:00
// घटाव
Console.WriteLine($"t1 - t2 = {t1 - t2}"); // 01:30:00
Console.WriteLine($"t2 - t1 = {t2 - t1}"); // -01:30:00
// गुणा (स्केलर) - .NET 6+
// Console.WriteLine($"t1 * 2 = {t1 * 2}"); // 06:00:00
// भाग (स्केलर)
Console.WriteLine($"t1 / 2 = {t1 / 2}"); // 01:30:00
// भाग (TimeSpan से) - अनुपात लौटाता है (double)
Console.WriteLine($"t1 / t2 = {t1 / t2}"); // 2.0
// तुलना
Console.WriteLine($"\nt1 > t2: {t1 > t2}"); // True
Console.WriteLine($"t1 < t2: {t1 < t2}"); // False
Console.WriteLine($"t1 == t2: {t1 == t2}"); // False
// अवधि (Duration) - हमेशा धनात्मक
Console.WriteLine($"t1.Duration(): {t1.Duration()}"); // 03:00:00
Console.WriteLine($"t2.Duration(): {t2.Duration()}"); // 01:30:00
Console.WriteLine($"(t2 - t1).Duration(): {(t2 - t1).Duration()}"); // 01:30:00
}
}
आउटपुट
t1: 03:00:00 t2: 01:30:00 t1 + t2 = 04:30:00 t1 - t2 = 01:30:00 t2 - t1 = -01:30:00 t1 / 2 = 01:30:00 t1 / t2 = 2 t1 > t2: True t1 < t2: False t1 == t2: False t1.Duration(): 03:00:00 t2.Duration(): 01:30:00 (t2 - t1).Duration(): 01:30:00
व्यावहारिक उदाहरण: समय अंतराल गणना
using System;
public class Demo
{
public static void Main()
{
// कार्य प्रारंभ और समाप्ति समय
DateTime start = new DateTime(2024, 1, 15, 9, 0, 0); // 9:00 AM
DateTime end = new DateTime(2024, 1, 15, 17, 30, 0); // 5:30 PM
TimeSpan workDuration = end - start;
TimeSpan lunchBreak = TimeSpan.FromHours(1);
// शुद्ध कार्य समय
TimeSpan netWorkTime = workDuration - lunchBreak;
Console.WriteLine($"कार्य प्रारंभ: {start:t}");
Console.WriteLine($"कार्य समाप्ति: {end:t}");
Console.WriteLine($"कुल अवधि: {workDuration}");
Console.WriteLine($"लंच ब्रेक: {lunchBreak}");
Console.WriteLine($"शुद्ध कार्य समय: {netWorkTime}");
// ओवरटाइम जांच (8 घंटे मानक)
TimeSpan standardHours = TimeSpan.FromHours(8);
if (netWorkTime > standardHours)
{
TimeSpan overtime = netWorkTime - standardHours;
Console.WriteLine($"ओवरटाइम: {overtime}");
}
else
{
Console.WriteLine("कोई ओवरटाइम नहीं");
}
}
}
आउटपुट
कार्य प्रारंभ: 9:00 AM कार्य समाप्ति: 5:30 PM कुल अवधि: 08:30:00 लंच ब्रेक: 01:00:00 शुद्ध कार्य समय: 07:30:00 कोई ओवरटाइम नहीं
महत्वपूर्ण बिंदु
TimeSpanअपरिवर्तनीय (immutable) है - संक्रियाएं नया इंस्टेंस बनाती हैंSubtract()और-ऑपरेटर समान काम करते हैं- परिणाम ऋणात्मक हो सकता है (यदि दूसरा TimeSpan बड़ा है)
Duration()निरपेक्ष मान (absolute value) लौटाता है- ओवरफ्लो/अंडरफ्लो पर
OverflowExceptionफेंका जाता है TimeSpan.Zeroयोगात्मक पहचान है