ভবিষ্যত বা অতীতের তারিখ গণনা করা

C:
ভবিষ্যত বা অতীতের তারিখ গণনা করা

কিভাবে:

যদিও C স্ট্যান্ডার্ড লাইব্রেরি সরাসরি তারিখের অ্যারিথমেটিকের জন্য ফাংশন প্রদান করে না, আপনি time.h লাইব্রেরি ব্যবহার করে তারিখের সাথে কাজ করতে পারেন, বিশেষ করে time_t ডেটা টাইপ ও struct tm নিয়ে কাজ করা। বর্তমান তারিখে দিন যোগের একটি সরলীকৃত উদাহরণ নিচে দেওয়া হল:

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

void addDays(struct tm* date, int daysToAdd) {
    const time_t ONE_DAY = 24 * 60 * 60; // একদিনের সেকেন্ড
    // tm স্ট্রাকচারকে time_t তে রূপান্তর করে, দিনগুলি যোগ করে এবং ফিরে যায়
    time_t date_seconds = mktime(date) + (daysToAdd * ONE_DAY);
    *date = *localtime(&date_seconds);
}

int main() {
    time_t now;
    time(&now);
    struct tm futureDate = *localtime(&now);

    int daysToAdd = 10; // যোগ করার জন্য আংশিক দিন সামঞ্জস্য করুন
    addDays(&futureDate, daysToAdd);

    printf("ভবিষ্যতের তারিখ: %d-%d-%d\n", futureDate.tm_year + 1900, futureDate.tm_mon + 1, futureDate.tm_mday);

    return 0;
}

এই কোডটি নির্দিষ্ট সংখ্যক দিন বর্তমান তারিখে যোগ করে এবং ভবিষ্যতের তারিখটি প্রিন্ট করে। লক্ষ্য করুন, এই পদ্ধতিটি mktime এবং localtime দ্বারা হ্যান্ডেল করা লিপ সেকেন্ড এবং ডেলাইট সেভিং টাইম সামঞ্জস্যের বিষয়গুলি বিবেচনা করে।

নমুনা আউটপুট:

ভবিষ্যতের তারিখ: 2023-04-23

মনে রাখবেন, এই উদাহরণে দিন যোগ করা হয়েছে, কিন্তু আরও জটিল হিসাব (যেমন মাস বা বছর যোগ করা, লিপ বছর বিবেচনা করা) এর জন্য আপনি আরও জটিল যুক্তি বা C++ এর date.h অথবা C এ থার্ড-পার্টি লাইব্রেরির মত লাইব্রেরি প্রয়োজন হবে।

গভীরে ডুব দেওয়া

C এ সময় লাইব্রেরি ব্যবহার করে তারিখ ম্যানিপুলেশন মানে প্রত্যক্ষভাবে ইউনিক্স এপক (০০:০০, ১ জানুয়ারি ১৯৭০, UTC) থেকে সেকেন্ডে সময় ম্যানিপুলেশন করা, তারপর সেগুলিকে একটি মানবপঠ্য তারিখ ফর্ম্যাটে (struct tm) ফিরে আনা। এই পদ্ধতিটি সাধারণ কিন্তু মৌলিক অপারেশনগুলির জন্য কার্যকর এবং এটি ক্রস-প্ল্যাটফর্ম হওয়ার সুবিধা নিয়ে আসে এবং C স্ট্যান্ডার্ড লাইব্রেরির অংশ হয়ে থাকে।

তবে, এই পদ্ধতির সাধারণতাও একটি সীমাবদ্ধতা। বিভিন্ন মাসের দৈর্ঘ্য, লিপ বছর, এবং সময় অঞ্চলগুলি হিসাব করা সহ আরও জটিল তারিখ হিসাবের কাজগুলি দ্রুত অ-তুচ্ছ হয়ে পড়ে। datetime সহ Python অথবা java.time সহ Java এর মতো ভাষাগুলি তারিখ অ্যারিথমেটিকের জন্য আরও অন্তর্দৃষ্টিসম্পন্ন API প্রদান করে, স্পষ্টতা এবং ব্যবহারের সুবিধার জন্য অবজেক্ট ওরিয়েন্টেড নীতিগুলি গ্রহণ করে।

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

আধুনিক বিকল্পগুলির উপলব্ধতা সত্ত্বেও, C স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করে তারিখ ম্যানিপুলেট করার পদ্ধতিটি বোঝা একটি মূল্যবান দক্ষতা রয়ে গেছে। এটি কম্পিউটার কিভাবে সময় প্রতিনিধিত্ব করে এবং তা নিয়ে কাজ করে তার গভীর উপলব্ধি প্রদান করে, যা নির্দিষ্ট প্রোগ্রামিং ভাষা ছাড়িয়ে যায়।