1. Date
ক্লাস এবং ইউনিক্স সময়
জাভার প্রথম থেকেই, ভাষাটির সময় এবং তারিখ নিয়ে কাজ করার জন্য একটি বিশেষ শ্রেণী রয়েছে — Date
। Date
সময়ের সাথে সাথে, তারিখগুলির সাথে কাজ করার জন্য আরও বেশ কয়েকটি ক্লাস উপস্থিত হয়েছিল, কিন্তু প্রোগ্রামাররা আজও ক্লাস ব্যবহার করে চলেছে ।
কারণ এটি খুবই সহজ এবং সুবিধাজনক। এবং একজন প্রোগ্রামার হিসাবে, আপনি অবশ্যই যে কোনও বাস্তব প্রকল্পে এটির মুখোমুখি হবেন। এটি ব্যবহার করা বা না করা আপনার পছন্দ, তবে আপনাকে অবশ্যই এটি জানতে হবে। তাই আপনার মূল্যবান সময়ের কয়েক মিনিট সময় দিন।
কি Date
ক্লাস এত ভাল করে তোলে? এর সরলতা।
ক্লাস তারিখ এবং সময় তথ্য সংরক্ষণ করে 1 জানুয়ারী, 1970 সাল থেকে অতিবাহিত হওয়া মিলিসেকেন্ডের সংখ্যাDate
হিসাবে। এটি অনেক মিলিসেকেন্ড, তাই সেগুলি সংরক্ষণ করতে টাইপ ব্যবহার করা হয়।long
কেন বিশেষভাবে 1970 সাল থেকে? এটিকে ইউনিক্স সময় বলা হয় : ইউনিক্স অপারেটিং সিস্টেম, যা সমস্ত আধুনিক অপারেটিং সিস্টেমের পিতামহ, এটি কীভাবে সময় রাখে।
কিন্তু দুটি তারিখের মধ্যে কতটা সময় অতিবাহিত হয়েছে তা আপনি খুব সহজেই খুঁজে পেতে পারেন: শুধু একটি তারিখ থেকে অন্যটি বিয়োগ করুন এবং আপনি তারিখগুলির মধ্যে সময়ের পার্থক্যটি নিকটতম মিলিসেকেন্ডে পাবেন৷
এখানে ক্লাসের সাথে কাজ করার কিছু দরকারী উদাহরণ রয়েছে Date
।
2. বর্তমান তারিখ পাওয়া
বর্তমান সময় এবং তারিখ পেতে, কেবল একটি Date
বস্তু তৈরি করুন। প্রতিটি নতুন অবজেক্ট তৈরি করার সময় সঞ্চয় করে। এটা খুব সহজ দেখায়:
Date current = new Date();
এই কমান্ডটি কার্যকর করার পরে, current
ভেরিয়েবলটি তৈরি করা বস্তুর একটি রেফারেন্স সংরক্ষণ করবে Date
, যা অভ্যন্তরীণভাবে এটির সৃষ্টির সময় সংরক্ষণ করবে - 1 জানুয়ারী, 1970 সাল থেকে অতিবাহিত হওয়া মিলিসেকেন্ডের সংখ্যা।
স্ক্রিনে বর্তমান তারিখ প্রদর্শন করা হচ্ছে
বর্তমান তারিখ প্রদর্শন করতে, সহজভাবে: ক) একটি নতুন বস্তু তৈরি করুন , খ) পদ্ধতিটি Date
ব্যবহার করে এটি স্ক্রিনে মুদ্রণ করুন ।System.out.println()
উদাহরণ:
কোড | কনসোল আউটপুট |
---|---|
|
|
এখানে কনসোল আউটপুট মানে কি:
পাঠ্য | ব্যাখ্যা |
---|---|
বৃহস্পতিবার _ | বৃহস্পতিবার |
২১ ফেব্রুয়ারি | 21 ফেব্রুয়ারি |
14:01:34 | ঘন্টা: মিনিট: সেকেন্ড |
ইইটি | সময় অঞ্চল: পূর্ব ইউরোপীয় সময় |
2019 | বছর |
3. একটি নির্দিষ্ট তারিখ নির্ধারণ করা
আমরা বর্তমান সময় কিভাবে পেতে হয় তা খুঁজে বের করেছি, কিন্তু আমরা কিভাবে একটি Date
বস্তু তৈরি করব যা একটি ভিন্ন তারিখ বা সময় সঞ্চয় করে?
আবার, এখানে সবকিছু সহজ। একটি নির্দিষ্ট তারিখ সেট করতে, আপনাকে এই মত কোড লিখতে হবে:
Date birthday = new Date(year, month, day);
সবকিছুই সহজ এবং সুস্পষ্ট, তবে দুটি সূক্ষ্মতা সম্পর্কে সচেতন হতে হবে:
- বছর গণনা করতে হবে 1900 থেকে।
- শূন্য থেকে মাস সংখ্যা করা হয়।
এটি ইউনিক্স অপারেটিং সিস্টেমের আরেকটি উত্তরাধিকার: ইউনিক্সে, প্রোগ্রামাররা দুটি সংখ্যা ব্যবহার করে বছরটি নির্দেশ করে। 1977 এর পরিবর্তে, তারা কেবল 77 লিখেছে। তাই 77 সঠিক বছর যদি আমরা 1900 থেকে গণনা করি।
উদাহরণস্বরূপ, আমার জন্ম 21 মার্চ, 1989। মার্চ হল তৃতীয় মাস, তাই আমাকে লিখতে হবে:
কোড | কনসোল আউটপুট |
---|---|
|
|
মাস শূন্য থেকে সংখ্যা করা হয়, কিন্তু দিন হয় না এটা একটু অদ্ভুত, তাই না?
আমরা মনে করি সত্যিকারের প্রোগ্রামারদের প্রাধান্য পাওয়া উচিত ছিল এবং শূন্য থেকেও মাসের দিনগুলি গণনা করা উচিত ছিল। ওহ, এই কনফর্মিস্টরা 🙂
একটি নির্দিষ্ট সময় নির্ধারণ করা
একটি নির্দিষ্ট সময় নির্ধারণ করাও বেশ সহজ: এর জন্য আপনাকে এইরকম একটি বিবৃতি লিখতে হবে:
Date birthday = new Date(year, month, day, hour, minutes, seconds);
ঘন্টা, মিনিট এবং সেকেন্ড শূন্য থেকে সংখ্যা করা হয়: আপনার ভিতরে থাকা প্রোগ্রামারকে স্বস্তির নিঃশ্বাস ফেলতে দিন।
উদাহরণ:
কোড | কনসোল আউটপুট |
---|---|
|
|
আমরা সময় নির্ধারণ করেছি 12:15 এবং তারিখ 4 জুন, 2005 । এটি একটি নন-প্রোগ্রামারের পক্ষে পড়া কিছুটা কঠিন, তবে এটি যেমন করা উচিত তেমন কাজ করে।
4. তারিখের উপাদান নিয়ে কাজ করা
Date
আপনি শুধুমাত্র এটি প্রদর্শন করার চেয়ে একটি বস্তুর সাথে আরও কিছু করতে পারেন । এটিতে এমন পদ্ধতি রয়েছে যা আপনাকে অভ্যন্তরীণভাবে সঞ্চিত তারিখের পৃথক উপাদানগুলি পেতে দেয়:
পদ্ধতি | বর্ণনা |
---|---|
|
1900 এর সাপেক্ষে তারিখের বছর দেখায়। |
|
তারিখের মাস রিটার্ন করে (মাস শূন্য থেকে সংখ্যা করা হয়) |
|
মাসের দিন ফেরত দেয় |
|
সপ্তাহের দিন ফেরত দেয় |
|
ঘন্টা ফেরত দেয় |
|
মিনিট রিটার্ন করে |
|
সেকেন্ড ফেরত দেয় |
উদাহরণ:
কোড | কনসোল আউটপুট | বিঃদ্রঃ |
---|---|---|
|
|
2005 সালের জুন মাসের দিন শনিবার |
যাইহোক, একটি Date
বস্তু আপনাকে শুধুমাত্র একটি তারিখের পৃথক উপাদান পেতে দেয় না, তবে সেগুলি পরিবর্তনও করে:
পদ্ধতি | বর্ণনা |
---|---|
void setYear(int year) |
তারিখের বছর পরিবর্তন করে। বছর 1900 আপেক্ষিক নির্দেশিত হয়. |
void setMonth(int month) |
তারিখের মাস পরিবর্তন করে (মাস শূন্য থেকে সংখ্যা করা হয়) |
void setDate(int date) |
মাসের দিন পরিবর্তন করে |
void setHours(int hours) |
ঘন্টা পরিবর্তন করে |
void setMinutes(int minutes) |
মিনিট পরিবর্তন করে |
void setSeconds(int seconds) |
সেকেন্ড পরিবর্তন করে |
5. মিলিসেকেন্ড
আমরা আগেই বলেছি, Date
বস্তুটি 1 জানুয়ারী, 1970 সাল থেকে অতিবাহিত হওয়া মিলিসেকেন্ডের সংখ্যা সঞ্চয় করে।
যদি আমাদের সেই সংখ্যার প্রয়োজন হয়, আমরা এটি বস্তু থেকে পেতে পারি Date
:
long time = date.getTime();
পদ্ধতিটি বস্তুর getTime()
ভিতরে সংরক্ষিত মিলিসেকেন্ডের সংখ্যা প্রদান করে Date
।
আপনি না শুধুমাত্র মিলিসেকেন্ডের সংখ্যা পেতে পারেন, কিন্তু আপনি একটি বিদ্যমান বস্তুতে সেই সংখ্যাটি পরিবর্তন করতে পারেন:
Date date = new Date();
date.setTime(1117876500000L);
যাইহোক, আপনি এটি Date
তৈরি করার সময় অবজেক্টে সময় দিয়ে আরও সংক্ষিপ্তভাবে লিখতে পারেন:
Date date = new Date(1117876500000L);
6. তারিখ তুলনা
আপনি যদি দুটি তারিখের তুলনা করতে চান এবং কোনটি প্রথমে এসেছে তা খুঁজে বের করতে চান, আপনার কাছে তিনটি বিকল্প রয়েছে
প্রথম উপায় হল তারা প্রতিটি সঞ্চয় করা মিলিসেকেন্ডের সংখ্যার তুলনা করা:
if (date1.getTime() < date2.getTime())
দ্বিতীয় উপায়before()
হল একটি বস্তুর পদ্ধতি ব্যবহার করা Date
:
if (date1.before(date2))
এটি এই মত পড়ে: যদি date1
আগে আসে date2
, তাহলে...
তৃতীয় উপায়after()
হল একটি বস্তুর পদ্ধতি ব্যবহার করা Date
:
if (date2.after(date1))
এটি এই মত পড়ে: যদি date2
পরে হয় date1
, তাহলে...
7. DateFormat
ক্লাস
মনে রাখবেন, যখন আমরা স্ক্রিনে তারিখটি প্রদর্শন করেছি, তখন আমরা এরকম কিছু দেখেছি: Thu Feb 21 14:01:34 EET 2019
. সবকিছু সঠিক বলে মনে হচ্ছে, তবে বিন্যাসটি আরও বেশি যে কীভাবে একটি তারিখ সাধারণ মানুষের চেয়ে প্রোগ্রামারদের জন্য প্রদর্শিত হবে। আমরা ব্যবহারকারীদের জন্য তারিখটি আরও স্পষ্টভাবে প্রদর্শন করতে চাই। মত কিছু Tuesday, February 21
.
এবং বছর ছাড়া। অথবা প্রয়োজনে এক বছরের সাথে। সাধারণভাবে, আমরা তারিখটি বিভিন্ন উপায়ে প্রদর্শন করতে সক্ষম হতে চাই।
এই জন্য একটি বিশেষ ক্লাস আছে: SimpleDateFormat
.
উদাহরণ:
কোড |
---|
|
কনসোল আউটপুট |
|
প্রোগ্রামটি কী প্রদর্শন করেছে তা দেখুন: Jun-04-2005
. এটা কি ব্যবহার করা হয় না.
পার্থক্য হল যে আমরা বস্তুটি নিজেই প্রদর্শন করিনি , কিন্তু একটি বিশেষ স্ট্রিং একটি বস্তুর উপর মেথড Date
কল করে প্রাপ্ত । কিন্তু এটা এখানেও মূল বিষয় নয়।format()
SimpleDateFormat
যখন অবজেক্টটি তৈরি করা হয়েছিল, আমরা একটি প্যারামিটার হিসাবে SimpleDateFormat
স্ট্রিংটিতে পাস করেছি । "MMM-dd-YYYY"
এই স্ট্রিংটিই সেই তারিখের বিন্যাসটি প্রকাশ করে যা আমরা শেষ পর্যন্ত কনসোল আউটপুটে দেখেছি।
- MMM তিনটি অক্ষর ব্যবহার করে সংক্ষিপ্তভাবে মাসের নাম প্রদর্শনের জন্য নির্দেশ করে
- dd মাসের দিন প্রদর্শন করতে নির্দেশ করে
- YYYY চারটি সংখ্যা ব্যবহার করে বছর প্রদর্শন করতে নির্দেশ করে
যদি আমরা মাসটিকে সংখ্যা হিসাবে আউটপুট করতে চাই, তবে এর পরিবর্তে MMM
, আমাদের লিখতে হবে MM
, যা প্যাটার্নটি দেয় "MM-dd-YYYY"
। স্ক্রীন আউটপুট হবে06-04-2005
আমরা এই ক্লাসটি পরে আরও বিশদে আলোচনা করব।
8. Date.parse
পদ্ধতি
ক্লাস Date
অন্য কিছু আকর্ষণীয় এবং দরকারী করতে পারে - এটি একটি স্ট্রিং থেকে একটি তারিখ পেতে পারে। অথবা, প্রোগ্রামাররা বলে, এটি একটি স্ট্রিং পার্স করতে পারে।
parse()
এটির জন্য বিশেষ পদ্ধতি রয়েছে । পার্সিং এই মত দেখায়:
Date date = new Date();
date.setTime( Date.parse("Jul 06 12:15:00 2019") );
যাইহোক, এই কোডটি আরও কম্প্যাক্টলি লেখা যেতে পারে:
Date date = new Date("Jul 06 12:15:00 2019");
আমরা অন্যান্য পাঠে আরও বিস্তারিতভাবে স্ট্রিংগুলির পার্সিং বিবেচনা করব ।