1. Dateক্লাস এবং ইউনিক্স সময়

জাভার প্রথম থেকেই, ভাষাটির সময় এবং তারিখ নিয়ে কাজ করার জন্য একটি বিশেষ শ্রেণী রয়েছে — DateDateসময়ের সাথে সাথে, তারিখগুলির সাথে কাজ করার জন্য আরও বেশ কয়েকটি ক্লাস উপস্থিত হয়েছিল, কিন্তু প্রোগ্রামাররা আজও ক্লাস ব্যবহার করে চলেছে ।

কারণ এটি খুবই সহজ এবং সুবিধাজনক। এবং একজন প্রোগ্রামার হিসাবে, আপনি অবশ্যই যে কোনও বাস্তব প্রকল্পে এটির মুখোমুখি হবেন। এটি ব্যবহার করা বা না করা আপনার পছন্দ, তবে আপনাকে অবশ্যই এটি জানতে হবে। তাই আপনার মূল্যবান সময়ের কয়েক মিনিট সময় দিন।

কি Dateক্লাস এত ভাল করে তোলে? এর সরলতা।

ক্লাস তারিখ এবং সময় তথ্য সংরক্ষণ করে 1 জানুয়ারী, 1970 সাল থেকে অতিবাহিত হওয়া মিলিসেকেন্ডের সংখ্যাDate হিসাবে। এটি অনেক মিলিসেকেন্ড, তাই সেগুলি সংরক্ষণ করতে টাইপ ব্যবহার করা হয়।long

মজাদার.

কেন বিশেষভাবে 1970 সাল থেকে? এটিকে ইউনিক্স সময় বলা হয় : ইউনিক্স অপারেটিং সিস্টেম, যা সমস্ত আধুনিক অপারেটিং সিস্টেমের পিতামহ, এটি কীভাবে সময় রাখে।

কিন্তু দুটি তারিখের মধ্যে কতটা সময় অতিবাহিত হয়েছে তা আপনি খুব সহজেই খুঁজে পেতে পারেন: শুধু একটি তারিখ থেকে অন্যটি বিয়োগ করুন এবং আপনি তারিখগুলির মধ্যে সময়ের পার্থক্যটি নিকটতম মিলিসেকেন্ডে পাবেন৷

এখানে ক্লাসের সাথে কাজ করার কিছু দরকারী উদাহরণ রয়েছে Date


2. বর্তমান তারিখ পাওয়া

বর্তমান সময় এবং তারিখ পেতে, কেবল একটি Dateবস্তু তৈরি করুন। প্রতিটি নতুন অবজেক্ট তৈরি করার সময় সঞ্চয় করে। এটা খুব সহজ দেখায়:

Date current = new Date();

এই কমান্ডটি কার্যকর করার পরে, currentভেরিয়েবলটি তৈরি করা বস্তুর একটি রেফারেন্স সংরক্ষণ করবে Date, যা অভ্যন্তরীণভাবে এটির সৃষ্টির সময় সংরক্ষণ করবে - 1 জানুয়ারী, 1970 সাল থেকে অতিবাহিত হওয়া মিলিসেকেন্ডের সংখ্যা।

স্ক্রিনে বর্তমান তারিখ প্রদর্শন করা হচ্ছে

বর্তমান তারিখ প্রদর্শন করতে, সহজভাবে: ক) একটি নতুন বস্তু তৈরি করুন , খ) পদ্ধতিটি Dateব্যবহার করে এটি স্ক্রিনে মুদ্রণ করুন ।System.out.println()

উদাহরণ:

কোড কনসোল আউটপুট
Date current = new Date();
System.out.println(current);
Thu Feb 21 14:01:34 EET 2019

এখানে কনসোল আউটপুট মানে কি:

পাঠ্য ব্যাখ্যা
বৃহস্পতিবার _ বৃহস্পতিবার
২১ ফেব্রুয়ারি 21 ফেব্রুয়ারি
14:01:34 ঘন্টা: মিনিট: সেকেন্ড
ইইটি সময় অঞ্চল: পূর্ব ইউরোপীয় সময়
2019 বছর

3. একটি নির্দিষ্ট তারিখ নির্ধারণ করা

আমরা বর্তমান সময় কিভাবে পেতে হয় তা খুঁজে বের করেছি, কিন্তু আমরা কিভাবে একটি Dateবস্তু তৈরি করব যা একটি ভিন্ন তারিখ বা সময় সঞ্চয় করে?

আবার, এখানে সবকিছু সহজ। একটি নির্দিষ্ট তারিখ সেট করতে, আপনাকে এই মত কোড লিখতে হবে:

Date birthday = new Date(year, month, day);

সবকিছুই সহজ এবং সুস্পষ্ট, তবে দুটি সূক্ষ্মতা সম্পর্কে সচেতন হতে হবে:

  1. বছর গণনা করতে হবে 1900 থেকে।
  2. শূন্য থেকে মাস সংখ্যা করা হয়।
মজাদার.

এটি ইউনিক্স অপারেটিং সিস্টেমের আরেকটি উত্তরাধিকার: ইউনিক্সে, প্রোগ্রামাররা দুটি সংখ্যা ব্যবহার করে বছরটি নির্দেশ করে। 1977 এর পরিবর্তে, তারা কেবল 77 লিখেছে। তাই 77 সঠিক বছর যদি আমরা 1900 থেকে গণনা করি।

উদাহরণস্বরূপ, আমার জন্ম 21 মার্চ, 1989। মার্চ হল তৃতীয় মাস, তাই আমাকে লিখতে হবে:

কোড কনসোল আউটপুট
Date current = new Date(89, 2, 21);
System.out.println(current);
Tue Mar 21 00:00:00 EET 1989

মাস শূন্য থেকে সংখ্যা করা হয়, কিন্তু দিন হয় না এটা একটু অদ্ভুত, তাই না?

আমরা মনে করি সত্যিকারের প্রোগ্রামারদের প্রাধান্য পাওয়া উচিত ছিল এবং শূন্য থেকেও মাসের দিনগুলি গণনা করা উচিত ছিল। ওহ, এই কনফর্মিস্টরা 🙂

একটি নির্দিষ্ট সময় নির্ধারণ করা

একটি নির্দিষ্ট সময় নির্ধারণ করাও বেশ সহজ: এর জন্য আপনাকে এইরকম একটি বিবৃতি লিখতে হবে:

Date birthday = new Date(year, month, day, hour, minutes, seconds);

ঘন্টা, মিনিট এবং সেকেন্ড শূন্য থেকে সংখ্যা করা হয়: আপনার ভিতরে থাকা প্রোগ্রামারকে স্বস্তির নিঃশ্বাস ফেলতে দিন।

উদাহরণ:

কোড কনসোল আউটপুট
Date current = new Date(105, 5, 4, 12, 15, 0);
System.out.println(current);
Sat Jun 04 12:15:00 EEST 2005

আমরা সময় নির্ধারণ করেছি 12:15 এবং তারিখ 4 জুন, 2005 । এটি একটি নন-প্রোগ্রামারের পক্ষে পড়া কিছুটা কঠিন, তবে এটি যেমন করা উচিত তেমন কাজ করে।


4. তারিখের উপাদান নিয়ে কাজ করা

Dateআপনি শুধুমাত্র এটি প্রদর্শন করার চেয়ে একটি বস্তুর সাথে আরও কিছু করতে পারেন । এটিতে এমন পদ্ধতি রয়েছে যা আপনাকে অভ্যন্তরীণভাবে সঞ্চিত তারিখের পৃথক উপাদানগুলি পেতে দেয়:

পদ্ধতি বর্ণনা
int getYear()
1900 এর সাপেক্ষে তারিখের বছর দেখায়।
int getMonth()
তারিখের মাস রিটার্ন করে (মাস শূন্য থেকে সংখ্যা করা হয়)
int getDate()
মাসের দিন ফেরত দেয়
int getDay()
সপ্তাহের দিন ফেরত দেয়
int getHours()
ঘন্টা ফেরত দেয়
int getMinutes()
মিনিট রিটার্ন করে
int getSeconds()
সেকেন্ড ফেরত দেয়

উদাহরণ:

কোড কনসোল আউটপুট বিঃদ্রঃ
Date current = new Date(105, 5, 4, 12, 15, 0);
System.out.println(current.getYear());
System.out.println(current.getMonth());
System.out.println(current.getDate());
System.out.println(current.getDay());

105
5
4
6

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.

উদাহরণ:

কোড
Date current = new Date(105, 5, 4, 12, 15, 0);
SimpleDateFormat formatter = new SimpleDateFormat("MMM-dd-YYYY");
String message = formatter.format(current);
System.out.println(message);
কনসোল আউটপুট
Jun-04-2005

প্রোগ্রামটি কী প্রদর্শন করেছে তা দেখুন: 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");

আমরা অন্যান্য পাঠে আরও বিস্তারিতভাবে স্ট্রিংগুলির পার্সিং বিবেচনা করব ।