কম্পিউটার টিউটোরিয়াল

C#-এ DateTime.Subtract() মেথড: তারিখ বা টাইমস্প্যান বিয়োগ করা


C#-এ DateTime.Subtract() মেথডটি বর্তমান DateTime ইনস্ট্যান্স থেকে অন্য একটি DateTime বা TimeSpan বিয়োগ করতে ব্যবহৃত হয়। এটি দুটি ওভারলোডে উপলব্ধ।

সিনট্যাক্স (Syntax)

// DateTime - DateTime = TimeSpan
public TimeSpan Subtract(DateTime value);
// DateTime - TimeSpan = DateTime
public DateTime Subtract(TimeSpan value);

উদাহরণ ১: দুটি তারিখের পার্থক্য (TimeSpan ফেরত দেয়)

using System;

public class Demo
{
    public static void Main()
    {
        DateTime d1 = new DateTime(2019, 10, 10, 8, 10, 40);
        DateTime d2 = new DateTime(2017, 11, 06, 8, 10, 40);
        
        Console.WriteLine("Date 1 = " + d1);
        Console.WriteLine("Date 2 = " + d2);
        
        TimeSpan res = d1.Subtract(d2);
        Console.WriteLine("TimeSpan between two dates = {0} ", res);
    }
}

আউটপুট

Date 1 = 10/10/2019 8:10:40 AM
Date 2 = 11/6/2017 8:10:40 AM
TimeSpan between two dates = 703.00:00:00

৭০৩ দিনের পার্থক্য।

উদাহরণ ২: তারিখ থেকে TimeSpan বিয়োগ (DateTime ফেরত দেয়)

using System;

public class Demo
{
    public static void Main()
    {
        DateTime d = new DateTime(2019, 10, 10, 8, 10, 40);
        // ১ দিন ১০ ঘণ্টা ১০ মিনিট ১২ সেকেন্ড
        TimeSpan t = new TimeSpan(1, 10, 10, 12);
        
        Console.WriteLine("Date = " + d);
        
        DateTime res = d.Subtract(t);
        Console.WriteLine("DateTime between date d and timespan t = {0} ", res);
    }
}

আউটপুট

Date = 10/10/2019 8:10:40 AM
DateTime between date d and timespan t = 10/8/2019 10:00:28 PM

Subtract() vs অপারেটর (-)

অপারেশনমেথডঅপারেটরফলাফল
DateTime - DateTimed1.Subtract(d2)d1 - d2TimeSpan
DateTime - TimeSpand1.Subtract(ts)d1 - tsDateTime
DateTime + TimeSpand1.Add(ts)d1 + tsDateTime

অপারেটর ব্যবহার উদাহরণ

DateTime d1 = new DateTime(2023, 12, 25);
DateTime d2 = new DateTime(2023, 1, 1);
TimeSpan ts = TimeSpan.FromDays(10);

// সমান ফলাফল
TimeSpan diff1 = d1.Subtract(d2);
TimeSpan diff2 = d1 - d2;

DateTime past1 = d1.Subtract(ts);
DateTime past2 = d1 - ts;

Console.WriteLine(diff1 == diff2); // True
Console.WriteLine(past1 == past2); // True

TimeSpan প্রোপার্টি এবং ফরম্যাটিং

TimeSpan ts = d1.Subtract(d2);

Console.WriteLine($"Total days: {ts.TotalDays}");           // 358.0
Console.WriteLine($"Total hours: {ts.TotalHours}");         // 8592
Console.WriteLine($"Total minutes: {ts.TotalMinutes}");     // 515520
Console.WriteLine($"Total seconds: {ts.TotalSeconds}");     // 30931200
Console.WriteLine($"Days property: {ts.Days}");             // 358 (পূর্ণ দিন)
Console.WriteLine($"Formatted: {ts:dd\\:hh\\:mm\\:ss}");    // 358:00:00:00

প্রয়োগিক ব্যবহার: বয়স হিসাব

public static int CalculateAge(DateTime birthDate)
{
    DateTime today = DateTime.Today;
    TimeSpan diff = today.Subtract(birthDate);
    int age = (int)(diff.TotalDays / 365.2425); // লিপ ইয়ার বিবেচনা
    return age;
}

// অথবা সহজে
public static int CalculateAgeSimple(DateTime birthDate)
{
    DateTime today = DateTime.Today;
    int age = today.Year - birthDate.Year;
    if (birthDate.Date > today.AddYears(-age)) age--;
    return age;
}

সতর্কতা: DateTime.Kind (Local/Utc) মিশ্রিত থাকলে Subtract() অপ্রত্যাশিত ফলাফল দিতে পারে। তুলনার আগে উভয়কে একই Kind-এ আনার জন্য ToUniversalTime() ব্যবহার করুন।

  1. C#-এ DateTime.ToFileTime() মেথড: DateTime থেকে উইন্ডোজ ফাইল টাইম

  2. C#-এ DateTime.ToBinary() মেথড: DateTimeকে ৬৪-বিট বাইনারি-এ সিরিয়ালাইজ

  3. C#-এ DateTime.AddYears() পদ্ধতি

  4. C#-এ DateTime.AddHours() মেথড