দুটি তারিখ তুলনা করা

C:
দুটি তারিখ তুলনা করা

কীভাবে:

C ভাষায় তারিখের জন্য কোন বিল্ট-ইন টাইপ নেই, অতএব তারিখ ও সময় স্ট্রাকচারে কাজ করার জন্য time.h লাইব্রেরী ব্যবহার করা প্রয়োজন। তারিখ তুলনা করার জন্য প্রায়শই tm স্ট্রাকচার এবং difftime() ফাংশন ব্যবহৃত হয়। নিচে দুটি তারিখ তুলনার একটি উদাহরণ দেওয়া হল:

#include <stdio.h>
#include <time.h>

int main() {
    struct tm date1 = {0};
    struct tm date2 = {0};
    double seconds;

    // প্রথম তারিখ (YYYY, MM, DD)
    date1.tm_year = 2023 - 1900; // ১৯০০ সাল থেকে বছর
    date1.tm_mon = 3 - 1;        // মাস [0-11]
    date1.tm_mday = 15;          // মাসের দিন [1-31]

    // দ্বিতীয় তারিখ (YYYY, MM, DD)
    date2.tm_year = 2023 - 1900;
    date2.tm_mon = 4 - 1;
    date2.tm_mday = 14;

    // time_t ফরম্যাটে রূপান্তর
    time_t time1 = mktime(&date1);
    time_t time2 = mktime(&date2);

    // তুলনা
    seconds = difftime(time1, time2);

    if (seconds == 0) {
        printf("তারিখগুলো একই।\n");
    } else if (seconds > 0) {
        printf("প্রথম তারিখ দ্বিতীয় তারিখের পরে।\n");
    } else {
        printf("প্রথম তারিখ দ্বিতীয় তারিখের আগে।\n");
    }

    return 0;
}

আউটপুট হবে:

প্রথম তারিখ দ্বিতীয় তারিখের আগে।

এই প্রোগ্রামটি নির্দিষ্ট তারিখে দুটি tm স্ট্রাকচার ইনিশিয়ালাইজ করে, mktime() ব্যবহার করে তাদের টাইম_t ফরম্যাটে রূপান্তর করে, এবং অবশেষে difftime() ব্যবহার করে তাদের তুলনা করে, যা দ্বিতীয় সময়ের (একটি double হিসেবে) মধ্যে পার্থক্য প্রদান করে।

গভীর ডাইভ

C ভাষার প্রাথমিক দিনগুলিতে, তারিখ এবং সময়ের অপারেশনগুলি ম্যানুয়াল গণনা প্রয়োজন করত, যার মধ্যে অধিবর্ষ, মাসের বিভিন্ন দিনের সংখ্যা, এমনকি লিপ সেকেন্ডও অন্তর্ভুক্ত ছিল। time.h এর ANSI C স্ট্যান্ডার্ডে চালু হওয়ার ফলে C তে সময় সামলানো মানকীকৃত হয়েছে, তারিখ এবং সময়ের অপারেশনগুলি সরলীকরণ করে।

তারিখের তুলনা করার জন্য time.h ব্যবহার সোজা কিন্তু সীমাবদ্ধতা রয়েছে্। tm স্ট্রাকচার সময় অঞ্চল বা দিবালোক সাশ্রয়ী সময় অন্তর্ভুক্ত করে না, এবং difftime() কেবল সেকেন্ডের পার্থক্য প্রদান করে, নির্দিষ্ট অ্যাপ্লিকেশনগুলির জন্য আরও সূক্ষ্ম গ্রানুলারিটির অভাব রয়েছে।

সময় অঞ্চলের সমর্থন, দিবালোক সাশ্রয়ী সময়ের পরিবর্তন, এবং আরও সঠিক সময় ব্যবধানের মত আরও সুদৃঢ় তারিখ-সময় অপারেশনের প্রয়োজন হলে, date.h (হাওয়ার্ড হিন্নান্ট তারিখ লাইব্রেরী, যা স্ট্যান্ডার্ড লাইব্রেরীর অংশ নয়) এর মত লাইব্রেরিগুলি C++ এ তারিখ-সময় ম্যানিপুলেশনের জন্য আরও ব্যাপক টুল প্রদান করে, প্রোগ্রামিং ভাষার ডিজাইনে দশকগুলির বিবর্তন থেকে লাভ করে। C প্রোগ্রামারগুলির জন্য, এই বাহ্যিক লাইব্রেরিগুলি ব্যবহার করা বা সরাসরি তারিখ-সময়ের জটিলতাগুলি সুনিপুণভাবে সামলানো নির্ভুল এবং সাংস্কৃতিকভাবে সচেতন তারিখ-সময় ম্যানিপুলেশন অর্জনের জন্য প্রয়োজন।