সি++ এ সময় এবং তারিখ ম্যানিপুলেশনের জন্য C++11 থেকে std::chrono লাইব্রেরি যোগ করা হয়েছে, যা সময় নির্ধারণ, পরিমাপ, এবং সময়কাল সম্পর্কিত কাজগুলো সহজে করতে সহায়তা করে। C++20 এ std::chrono::date যুক্ত করা হয়েছে, যা আরও উন্নত সময় ও তারিখ ম্যানিপুলেশন সুবিধা প্রদান করে। এখানে std::chrono, std::date, এবং std::duration এর প্রধান উপাদান ও ব্যবহার নিয়ে আলোচনা করা হলো।
১. std::chrono
std::chrono হল C++ স্ট্যান্ডার্ড লাইব্রেরির একটি অংশ যা সময় ম্যানিপুলেশন ও পরিমাপের জন্য ব্যবহৃত হয়। এতে বিভিন্ন ক্লাস ও ফাংশন রয়েছে যা টাইম পয়েন্ট, টাইম ডিউরেশন এবং ক্লক ব্যবহার করে সময়ের বিভিন্ন পরিসীমা নিয়ে কাজ করতে সক্ষম করে।
প্রধান উপাদানগুলো:
- Clocks:
std::chrono::system_clock,std::chrono::steady_clock, এবংstd::chrono::high_resolution_clock। - Time Point: একটি নির্দিষ্ট সময় নির্দেশ করে।
- Duration: সময়ের একটি নির্দিষ্ট সময়কাল।
উদাহরণ:
#include <iostream>
#include <chrono>
int main() {
// বর্তমান সময় পাওয়া
auto start = std::chrono::system_clock::now();
// কিছু বিলম্বের জন্য একটি লুপ
for (int i = 0; i < 1000000; ++i) {}
// বিলম্ব পরবর্তী সময় পাওয়া
auto end = std::chrono::system_clock::now();
// সময়ের ব্যবধান গণনা করা
auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
std::cout << "Elapsed time: " << elapsed.count() << " milliseconds" << std::endl;
return 0;
}এখানে system_clock বর্তমান সময় সংগ্রহ করে এবং duration_cast ব্যবহার করে সময়ের ব্যবধান গণনা করে।
২. std::chrono::date (C++20 থেকে)
std::chrono::date C++20 এ যোগ করা হয়, যা তারিখ ম্যানিপুলেশন সহজ করে। এটি তারিখ ও সময় সম্পর্কিত কাজগুলোতে সহায়ক, যেমন নির্দিষ্ট তারিখ সেট করা, সময়ের ব্যবধান হিসাব করা, এবং ক্যালেন্ডার ভিত্তিক ম্যানিপুলেশন।
উদাহরণ:
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
using namespace std::chrono_literals;
// নির্দিষ্ট তারিখ এবং সময় সেট করা
year_month_day today = floor<days>(system_clock::now());
std::cout << "Today's date: " << today << std::endl;
// নির্দিষ্ট সময় পরবর্তী তারিখ
year_month_day next_week = today + days{7};
std::cout << "Next week's date: " << next_week << std::endl;
return 0;
}উপরের উদাহরণে, year_month_day এবং days টাইপ ব্যবহার করে বর্তমান তারিখ পাওয়া হয়েছে এবং এক সপ্তাহ পরে তারিখ গণনা করা হয়েছে।
৩. std::chrono::duration
std::chrono::duration বিভিন্ন সময়কালকে গণনা করতে ব্যবহৃত হয়। এটি সাধারণত std::chrono-এর অন্য টাইপগুলোর সাথে ব্যবধান মাপতে ব্যবহার করা হয়, যেমন সেকেন্ড, মিনিট, ঘন্টা, মিলিসেকেন্ড ইত্যাদি।
প্রধান টাইপ:
- seconds: সেকেন্ডে সময়কাল।
- milliseconds: মিলিসেকেন্ডে সময়কাল।
- microseconds: মাইক্রোসেকেন্ডে সময়কাল।
- nanoseconds: ন্যানোসেকেন্ডে সময়কাল।
উদাহরণ:
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
// 3 সেকেন্ড সময়কাল
duration<int> three_seconds(3);
std::cout << "Three seconds: " << three_seconds.count() << " seconds" << std::endl;
// মাইক্রোসেকেন্ডের একটি সময়কাল তৈরি করা
auto time_in_milliseconds = duration_cast<milliseconds>(three_seconds);
std::cout << "Three seconds in milliseconds: " << time_in_milliseconds.count() << " milliseconds" << std::endl;
return 0;
}এখানে duration একটি সময়কাল হিসেবে কাজ করে এবং duration_cast ব্যবহার করে এটিকে ভিন্ন টাইম ইউনিটে রূপান্তর করা হয়েছে।
সময় ও তারিখ ম্যানিপুলেশন: কিছু সাধারণ ব্যবহার
১. টাইম পয়েন্ট মাপা: std::chrono::system_clock এবং std::chrono::steady_clock ব্যবহার করে নির্দিষ্ট টাইম পয়েন্ট মাপা।
২. টাইম ইন্টারভ্যাল পরিমাপ: নির্দিষ্ট সময়ের ব্যবধান বের করতে duration ব্যবহার করা।
৩. তারিখ ক্যালকুলেশন: std::chrono::date ব্যবহার করে নির্দিষ্ট তারিখ ম্যানিপুলেশন করা।
৪. কনভার্সন: duration_cast ব্যবহার করে সময়ের ভিন্ন ইউনিটে রূপান্তর করা।
সারাংশ
std::chrono: সময় নির্ধারণ, পরিমাপ, এবং ম্যানিপুলেশনের জন্য ব্যবহৃত হয়।std::chrono::date: তারিখ নির্ধারণ ও ক্যালেন্ডার সম্পর্কিত কাজের জন্য C++20 থেকে সংযুক্ত।std::chrono::duration: সময়কাল মাপার জন্য ব্যবহৃত, যা বিভিন্ন ইউনিটে রূপান্তরযোগ্য।
std::chrono, std::date, এবং std::duration C++ এ সময় ও তারিখ ম্যানিপুলেশনের শক্তিশালী টুল এবং এগুলো সময়মিতিবিষয়ক কাজগুলিকে সহজতর ও আরও নির্ভরযোগ্য করে তোলে।
Read more