Ruby:
ভবিষ্যত বা অতীতের তারিখ গণনা করা
কিভাবে:
রুবি তার নির্মিত Date ক্লাস এবং কিছু অতিরিক্ত সুবিধার জন্য active_support গেম ব্যবহার করে তারিখের সাথে খেলা সহজ করে দেয়। এটি কি ভাবে করা যায় তা নিচে দেখানো হল:
require 'date'
require 'active_support/core_ext/integer'
# আজকের তারিখ পান
today = Date.today
puts "আজ হল: #{today}"
# ভবিষ্যতে 10 দিনের তারিখ নির্ণয়
future_date = today + 10
puts "এখন থেকে 10 দিন পরে হবে: #{future_date}"
# অতীতে 30 দিনের তারিখ নির্ণয়
past_date = today - 30
puts "30 দিন আগে ছিল: #{past_date}"
# active_support দ্বারা জটিল হিসাব
puts "2 মাসের মধ্যে, এটা হবে: #{2.months.from_now.to_date}"
puts "100 দিন আগে, এটা ছিল: #{100.days.ago.to_date}"নমুনা আউটপুট:
আজ হল: 2023-04-07
এখন থেকে 10 দিন পরে হবে: 2023-04-17
৩০ দিন আগে ছিল: ২০২৩-০৩-০৮
২ মাসের মধ্যে, এটা হবে: ২০২৩-০৬-০৭
১০০ দিন আগে, এটা ছিল: ২০২২-১২-২৮গভীর ডুব
রুবি তার মান এবং অতিরিক্ত লাইব্রেরিতে তারিখ হিসাবের কার্যকারিতা অন্তর্ভুক্তির আগে, ডেভেলপাররা প্রায়শই ম্যানুয়ালি তারিখ গণনা করতে হতো, অধ্যবসায় বর্ষে, বিভিন্ন মাসের দৈর্ঘ্য এবং সময় অঞ্চল—যা একটা বড় মাথাব্যথার কারণ ছিল।
Date ক্লাস স্ট্যান্ডার্ড থেকেই অনেক কিছু করে নেয়। আপনি সহজেই দিন যোগ (+) বা বিয়োগ (-) করতে পারেন। তবে, “এখন থেকে ২ মাস” এর মতো বেশি প্রত্যক্ষ সময় পিরিয়ড ম্যানিপুলেশনের জন্য, আমরা active_support এর উপর নির্ভর করি, যা Ruby on Rails থেকে বের করা হয়েছে। এই গেম মান রুবি ক্লাসগুলোর এক্সটেনশন ব্যবহার করে, এমন হিসাবনিকাশকে মানুষের বন্ধুত্বপূর্ণ করে তোলে।
অতীত বা ভবিষ্যত তারিখ হিসাব করার সময়, যদি আপনি সময়ও (DateTime বা Time অবজেক্টগুলি) মধ্যে আনছেন তবে সময় অঞ্চলগুলিও মনে রাখা উচিত। রুবির Time ক্লাস এবং active_support এটা সামাল দিতে পারে তবে এটি একটু বেশি সেট আপ প্রয়োজন।
এল্টারনেটিভ হিসেবে, time-lord এবং ice_cube গেমস রয়েছে, যা যথাক্রমে অধিক সুখপাঠ্য বা বিশেষ বৈশিষ্ট্যগুলির জন্য (যেমন পুনরাবৃত্ত ইভেন্ট) প্রস্তাব করে।
দেখুন ও
- রুবির সময় অঞ্চল নিয়ে কাজ করা: https://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html
- আরও মানুষের মতো প্রকাশের জন্য ’time-lord’ গেম: https://github.com/krainboltgreene/time-lord
- পুনরাবৃত্তি ইভেন্ট সামলানোর জন্য ‘ice_cube’ গেম: https://github.com/seejohnrun/ice_cube