কম্পিউটার

রুবি সময় এবং তারিখ ক্লাস কিভাবে ব্যবহার করবেন

সময় হল রুবিতে একটি শ্রেণী যা আপনাকে সময়ের একটি নির্দিষ্ট বিন্দু প্রতিনিধিত্ব করতে সাহায্য করে।

এই নিবন্ধটি পড়ার পরে আপনি রুবি টাইম উইজার্ড হওয়ার জন্য আপনার যা জানা দরকার তা শিখবেন!

কভার করা বিষয়গুলি৷ :

  • কীভাবে স্ট্রিংকে টাইম অবজেক্টে রূপান্তর করা যায়
  • কীভাবে একটি সময়কে উপাদানে ভাগ করা যায় (দিন/ঘন্টা/মিলিসেকেন্ড...)
  • কিভাবে Date ব্যবহার করবেন , DateTime &Time রুবি
  • তে ক্লাস
  • যে কোনো উপায়ে কিভাবে সময় ফরম্যাট করবেন
  • কিভাবে দুটি Time এর মধ্যে পার্থক্য খুঁজে বের করবেন বস্তু

এটা করা যাক!

রুবি টাইম ক্লাস

আপনি Time ব্যবহার করতে পারেন একটি সময় এবং তারিখ প্রতিনিধিত্ব করতে রুবিতে ক্লাস।

এই তারিখ তিনটি উপাদান আছে:

  • দিন
  • মাস
  • বছর

এবং সময় :

  • ঘন্টা
  • মিনিট
  • সেকেন্ড

এই তথ্য Time দ্বারা সংরক্ষণ করা হয় যুগের পর থেকে সেকেন্ডের সংখ্যা হিসাবে শ্রেণি, যা ইউনিক্স সময় নামেও পরিচিত।

আরম্ভ করার কয়েকটি উপায় আছে৷ একটি Time বস্তু:

  • আপনি Time.now ব্যবহার করে একটি বস্তু পেতে পারেন যা বর্তমান সময়ের প্রতিনিধিত্ব করে
  • আপনি একটি Time তৈরি করতে পারেন অবজেক্ট একটি ইউনিক্স টাইমস্ট্যাম্প এবং at ব্যবহার করে পদ্ধতি
  • আপনি Time.new নম্বরে শুরুর তারিখ দিতে পারেন (বিন্যাস:বছর/মাস/দিন)

এরকম :

সময় -14 04:40:00 +0200

আপনি একটি টাইম অবজেক্টকে এর যেকোনো উপাদানের জন্য জিজ্ঞাসা করতে পারেন।

যেমন…

আপনি জিজ্ঞাসা করতে পারেন কোন দিন, মাস বা ঘন্টা কোন সময় বস্তুর প্রতিনিধিত্ব করছে:

t =Time.nowputs t.dayputs t.monthputs t.hour

এছাড়াও, আপনি জিজ্ঞাসা করতে পারেন যে এই তারিখটি সপ্তাহের একটি নির্দিষ্ট দিনের সাথে মিলে যায় কিনা৷

উদাহরণস্বরূপ :

"এই তারিখ কি রবিবার?".

এইগুলি পূর্বনির্ধারিত পদ্ধতি, তারা হয় true ফেরত দেবে অথবা false .

উদাহরণ :

t =Time.nowputs t.monday?puts t.sunday?puts t.friday?

একবার চেষ্টা করে দেখুন!

টাইম জোন

একটি Time বস্তুর সাথে যুক্ত একটি সময় অঞ্চল আছে৷

আপনি একটি Time এর জন্য বর্তমান সময় অঞ্চল পরীক্ষা করতে পারেন বস্তুটি zone ব্যবহার করে পদ্ধতি।

এটি আপনাকে সময় অঞ্চলের সংক্ষিপ্ত রূপ দেবে৷

আপনি যদি টাইম জোন অফসেট চান আপনি utc_offset ব্যবহার করতে পারেন পদ্ধতি এই পদ্ধতির আউটপুট সেকেন্ডে, তবে আপনি এটিকে ঘন্টায় পেতে 3600 দ্বারা ভাগ করতে পারেন৷

উদাহরণ :

t =Time.nowt.zone# "CET"t.utc_offset / 3600# 1

এছাড়াও আপনি UTC এ বর্তমান সময় পেতে পারেন:

Time.now.utc

রুবি টাইম ফরম্যাটিং

রুবি ফরম্যাট Time ডিফল্টরূপে একটি নির্দিষ্ট উপায়ে বস্তু।

কিন্তু আপনি অন্য কিছু চাইতে পারেন।

এমন কিছু যা আপনার ব্যবহারের ক্ষেত্রে খাপ খায় .

সুখবর!

আপনি একটি পদ্ধতি ব্যবহার করতে পারেন প্রায় আপনার প্রয়োজনীয় যেকোনো বিন্যাস পেতে .

এই পদ্ধতিটি হল strftime , যার অর্থ মূলত 'ফরম্যাট সময়'।

এটি ফর্ম্যাট স্পেসিফায়ারের সাথে একটি স্ট্রিং পাস করে কাজ করে, এই স্পেসিফায়ারগুলি একটি মান দ্বারা প্রতিস্থাপিত হবে। আপনি যদি কখনও printf ব্যবহার করে থাকেন পদ্ধতিটি ধারণাটির সাথে খুব মিল।

আসুন কিছু উদাহরণ দেখি :

time =Time.newtime.strftime("%d/%m/%Y") # "05/12/2015"time.strftime("%k:%M") # "17:48"সময়। strftime("%I:%M %p") # "11:04 PM"time.strftime("আজ %A") # "আজ রবিবার"time.strftime("%B এর %d, %Y" ) # "21 ডিসেম্বর, 2015"time.strftime("Unix time is %s") # "Unix time is 1449336630"

আপনি দেখতে পাচ্ছেন, এই পদ্ধতিটি খুব নমনীয়। আপনি তারিখ ছাড়াই সময় পেতে পারেন বা বর্তমান মাসের বছর, দিন এবং নাম সহ একটি সুন্দর ফর্ম্যাট করা তারিখ পেতে পারেন৷

Strftime ফরম্যাট টেবিল

এর জন্য
ফর্ম্যাট বর্ণনা
%d মাসের দিন (01..31)
%m বছরের মাস (01..12) %-m ব্যবহার করুন (1..12)
%k ঘন্টা (0..23)
%M মিনিট
%S সেকেন্ড (00..60)
%I ঘন্টা (1..12)
%p AM/PM
%Y বছর
%A সপ্তাহের দিন (নাম)
%B মাস (নাম)

আপনি নিম্নলিখিত লিঙ্কগুলিতে উপলব্ধ বিভিন্ন ফর্ম্যাট সম্পর্কে আরও তথ্য পেতে পারেন:

  • https://strftime.net/
  • https://devdocs.io/ruby/time#method-i-strftime

একটি টাইমস্ট্যাম্প তৈরি করা হচ্ছে

নির্দিষ্ট ইভেন্টের তারিখের জন্য আপনি একটি টাইম-জোন স্বাধীন টাইমস্ট্যাম্প তৈরি করতে পারেন।

এখানে কিভাবে :

Time.now.to_i# 1549054305

এই টাইমস্ট্যাম্প হল UTC (সমন্বিত ইউনিভার্সাল টাইম) এ কয়েক সেকেন্ড।

সময়ের পার্থক্য (যোগ ও বিয়োগ)

কখনও কখনও আপনি বর্তমান সময় চান না, কিন্তু ভবিষ্যতে বা অতীতের একটি সময়।

আপনি সময় বস্তুর সাথে যোগ করতে পারেন!

মনে রাখবেন যে Time এর অভ্যন্তরীণ উপস্থাপনা সেকেন্ডের মধ্যে, তাই আপনি এটি করতে পারেন:

# দশ সেকেন্ড টাইম যোগ করুন =Time.new + 10

এই উদাহরণে আপনি একটি টাইম অবজেক্ট পাবেন যা বর্তমান সময় থেকে 10 সেকেন্ড সেট করা হয়েছে।

তারপরে আপনি পরীক্ষা করতে পারেন যে সেই সময়টি এখনও কেটে গেছে কিনা৷

Time.new> time

আপনি যদি গতকালের দিনের মতো কিছু পেতে চান তবে আপনাকে গণনা করতে হবে দিনে কত সেকেন্ড আছে।

এরকম :

# সেকেন্ড * মিনিট * ঘন্টা60 * 60 * 24# 86400

এখন এই সংখ্যাটি দিয়ে আমরা বর্তমান তারিখ থেকে এটিকে বাদ দিতে পারি:

Time.now - 86400

আপনি যদি রেল ব্যবহার করেন তবে আপনি এটি করতে পারেন:

Time.now - 1.day

তারিখ ক্লাস

Date ক্লাসে মিনিট, সেকেন্ড বা ঘন্টার কোন ধারণা নেই। এই ক্লাসটি দিনের পরিপ্রেক্ষিতে অভ্যন্তরীণভাবে সবকিছু সঞ্চয় করে।

Date ব্যবহার করতে ক্লাস আপনাকে require 'date' করতে হবে .

আপনি Date.today ব্যবহার করে বর্তমান তারিখ পেতে পারেন .

সময়ের বিপরীতে, Date.new today এর জন্য একটি উপনাম নয় , তাই মনে রাখবেন।

তারিখ.আজ # বর্তমান dateDate.new # একটি নেতিবাচক তারিখ প্রদান করে

তারিখ পাটিগণিত Time এর অনুরূপ ক্লাস, পার্থক্য হল আপনি সেকেন্ডের পরিবর্তে দিন যোগ করুন।

তারিখ.আজ + 1 # একদিন যোগ করে

একটি Date ঘন্টা, সেকেন্ড বা মিনিট সম্পর্কে কিছুই জানে না, তাই শুধুমাত্র এই ক্লাসটি ব্যবহার করুন যদি আপনার এগুলোর প্রয়োজন না হয়।

তারিখ ও সময় পার্সিং

Date.parse পদ্ধতিটি তারিখের মতো দেখতে যেকোনো স্ট্রিং পার্স করার চেষ্টা করবে।

এটি একটি সাধারণ হিউরিস্টিক অ্যালগরিদম ব্যবহার করে যা ইনপুট ফর্ম্যাট সনাক্ত করার চেষ্টা করে৷

কখনও কখনও এটি অবাঞ্ছিত ফলাফল দেয়৷

উদাহরণ :

Date.parse("10/10/2010") # -> 2010-10-10Date.parse("সেপ্টেম্বর 3") # -> 2015-09-03Date.parse("আমি এক কাপ কফি খেতে পারি , দয়া করে?") # -> 1 মে

আপনার যদি আরও কঠোর কিছুর প্রয়োজন হয় তবে আপনি Date.iso8601 ব্যবহার করতে পারেন পদ্ধতি।

একটি iso8601 তারিখের নিম্নলিখিত বিন্যাস রয়েছে:

বছর-মাস-দিন

একটি ArgumentError ব্যতিক্রম অবৈধ ইনপুট উত্থাপিত হবে.

উদাহরণ :

তারিখ.iso8601("2018-10-01")

আপনি Date.strptime ব্যবহার করতে পারেন পদ্ধতি এবং আপনার নিজস্ব কাস্টম ইনপুট বিন্যাস প্রদান করার জন্য বিন্যাস নির্দিষ্টকরণের একটি সেট। এই একই স্পেসিফায়ার যা আপনি strftime এর জন্য ব্যবহার করতে পারেন .

উদাহরণ :

তারিখ.strptime("সেপ্টেম্বর 3", "%B এর %d") # 2015-09-03

আপনি Time ব্যবহার করে সময় বিশ্লেষণ করতে পারেন ক্লাস।

অন্য কথায় :

'2018-01-01 00:00'-এর মতো একটি স্ট্রিংকে কীভাবে টাইম অবজেক্টে রূপান্তর করা যায়!

এখানে একটি উদাহরণ আছে :

'time'Time.parse প্রয়োজন("সেপ্টেম্বর 20 18:00")

আপনি যদি আপনার ইনপুট স্ট্রিং এর বিন্যাস প্রদান করতে চান তাহলে আপনি strptime ব্যবহার করতে পারেন পদ্ধতি।

এরকম :

'time'Time.strptime("ডিসেম্বর 2017 এর 1", "%B %Y এর %d") প্রয়োজন

শুধুমাত্র Time.parse এর মধ্যে পার্থক্য &Date.parse আপনি যে ধরনের বস্তু ফিরে পান (Time অথবা Date )।

তারিখ ধ্রুবক

Date ক্লাসে কিছু ধ্রুবক আছে যা আপনার কাজে লাগতে পারে।

উদাহরণস্বরূপ, বছরের মাসগুলির সাথে একটি অ্যারে এবং সপ্তাহের দিনগুলির সাথে আরেকটি রয়েছে৷

মাসগুলি সূচী 1 থেকে শুরু হয় যাতে আপনি সরাসরি month number -> month name পেতে পারেন ম্যাপিং।

দিনগুলি রবিবার দিয়ে শুরু হয়, তবে আপনি rotate ব্যবহার করতে পারেন সোমবার থেকে সপ্তাহ শুরু করার পদ্ধতি৷

তারিখ::MONTHNAMES # (সূচক 0 =শূন্য)তারিখ::DAYNAMES.rotate(1)

তারিখের সময় ক্লাস

DateTime ক্লাস হল Date এর একটি সাবক্লাস এবং এটি তারিখ ছাড়াও সেকেন্ড সংরক্ষণ করতে পারে।

উদাহরণ :

'date'DateTime.superclass# DateDateTime.now# তারিখের সময়:2018-10-15T16:06:39+02:00

উভয়ই Time এবং DateTime একই কাজ করা যায়, মূল পার্থক্য হল Time C এ প্রয়োগ করা হয় , তাই এটি দ্রুত হবে৷

পারফরম্যান্স :

তুলনা:সময়:2644596.6 i/s তারিখ সময়:231634.8 i/s - 11.42x ধীর

ActiveSupport – সময় ও তারিখ পদ্ধতি

আপনি যদি রেল ব্যবহার করে থাকেন তাহলে আপনি সম্ভবত 3.days.ago এর মতো জিনিসগুলির সাথে পরিচিত। .

এই পদ্ধতিগুলি বিশুদ্ধ রুবিতে পাওয়া যায় না, এগুলি ActiveSupport দ্বারা যোগ করা হয় রেলের উপাদান।

এখানে আপনি কিছু উদাহরণ খুঁজে পেতে পারেন, লক্ষ্য করুন কিভাবে এই পদ্ধতিগুলি Time ফেরত দেয় না অথবা Date বস্তু, কিন্তু একটি কাস্টম ActiveSupport ক্লাস।

1.hour.to_i # 36001.day # ActiveSupport::Duration3.days.ago # ActiveSupport::TimeWithZone

আপনি এগুলো দিয়ে সময়ের গণিত করতে পারেন এবং আগামীকালের তারিখের মতো জিনিস পেতে পারেন:

Time.now + 1.day

অন্যান্য রেল-এক্সক্লুসিভ সময় পদ্ধতি:

তারিখ =Time.currentdate.change(hour:20)date.at_beginning_of_day

এবং বিন্যাসের জন্য:

তারিখ =Date.todaydate.to_formatted_s(:short) # "16 Jul"date.to_formatted_s(:long) # "July 16, 2018"

এই পদ্ধতির জন্য কোড আসলে বেশ সহজ, আপনি একটি কটাক্ষপাত করা উচিত. TimeWithZone-এর সোর্স কোডটিও একবার দেখে নেওয়ার মতো।

সারাংশ

এই নিবন্ধে আপনি সময় ও তারিখের ক্লাস, রুবিতে কীভাবে সময় পার্স ও ফর্ম্যাট করবেন এবং অ্যাক্টিভসাপোর্ট টাইম এক্সটেনশনগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে শিখেছেন৷

পড়ার জন্য ধন্যবাদ!


  1. রুবিতে রেক কী এবং এটি কীভাবে ব্যবহার করবেন

  2. একটি ম্যাট্রিক্স কি এবং রুবিতে এটি কীভাবে ব্যবহার করবেন?

  3. রুবি আলিয়াস কীওয়ার্ড কীভাবে ব্যবহার করবেন

  4. রুবিতে স্ট্রাকট এবং ওপেনস্ট্রাক্ট কীভাবে ব্যবহার করবেন