کلاس GregorianCalendar در جاوا

چاپ

در زبان برنامه نویسی جاوا، یک کلاس به نام GregorianCalendar وجود دارد که به هنگام کار کردن با تاریخ و زمان، کاربرد دارد. تقویم میلادی(Gregorian calendar) بسیار مورد استفاده قرار می گیرد. این تقویم در 15 اکتبر 1582 تاسیس شده است. 


در زبان برنامه نویسی جاوا، صدها کلاس وجود دارد. برخی از این کلاس ها، مثل کلاس هایی که در داخل پکیج java.lang وجود دارند، به طور اتوماتیک در برنامه ها اضافه می شوند. اما برای استفاده از کلاس های دیگر، باید یکی از سه روش زیر را انجام دهیم:

در مقالات فصول گذشته، با روش import کردن کلاس هایی مثل JOptionPane و Scanner آشنا شدیم. به همین صورت نیز می توانیم پکیج java.util که حاوی کلاس GregorianCalendar است را به کدهای خود اضافه کنیم. شما می توانید با استفاده از مسیر کامل کلاس GregorianCalendar، از این کلاس یک شیء را نمونه گیری(ایجاد) کنید. برای انجام این کار، به صورت زیر عمل کنید:

java.util.GregorianCalendar myAnniversary = new java.util.GregorianCalendar();

 بعنوان یک روش جایگزین، اگر ما دستور  import java.util.GregorianCalendar را بعنوان اولین خط در برنامه ی خود بنویسیم، کدهای ما خلاصه می شوند و استفاده و نوشتن آنها راحت تر خواهد شد. مثلا داریم:

GregorianCalendar myAnniversary = new GregorianCalendar();

یک راه دیگر نیز برای import کردن کلاس ها وجود دارد. و عبارت است از اینکه کل کلاس های آن پکیج را import کنیم. برای انجام این کار، می توانیم از علامت ستاره(*) استفاده کنیم. این علامت مشخص می کند که هر مجموعه کاراکتری می تواند به جای آن قرار گیرد. بنابراین در زبان برنامه نویسی جاوا، اگر از علامت ستاره(*) در جلوی دستور import استفاده کنیم، تمام کلاس های درون یک پکیج مشخص import خواهند شد. بعنوان مثال، دستور زیر باعث می شود تا کلاس GregorianCalendar و تمام دیگر کلاس های java.util  در کدها import شوند.:

import java.util.*;

 import کردن کلاس های اضافی ضرری ندارد و از این روش در برنامه های حرفه ای جاوا نیز استفاده می شود. اما اگر بخواهید، می توانید یک به یک کلاس ها را اضافه کنید. 


نکته: شما نمی توانید کلاس های جاوا را دقیقا مانند DOS یا UNIX به برنامه ی خود import کنید؛ زیرا این امکان وجود ندارد که با دستور زیر، تمام کلاس های جاوا را import کنیم:

import java.*;

این روش را تنها بر روی پکیج های خاصی می توانیم مورد استفاده قرار دهیم. مثل دو مورد زیر:

import java.util.*;

import java.lang.*;

همواره به خاطر داشته باشید که علامت ستاره(*) تمام کلاس های درون یک پکیج را import می کند اما پکیج هایی که در داخل آن پکیج ایمپورت شده قرار دارند را import نمی کند. 


نکته: دستور import به برنامه می گوید که : می خواهیم از داده ها و متدهایی استفاده کنیم که بخشی از کلاس یا پکیج import شده هستند. 


 نکته: اینکه کلاس های نوشته شده توسط ما، بدون اینکه از دستور import استفاده کنیم، در اپلیکیشن ها اضافه می شوند، به تنظیمات classpath بستگی دارد. برای اطلاعات بیشتر در مورد classpath، به ضمیمه ی A مراجعه کنید.

 


 برای اشیاء GregorianCalendar هفت constructor(سازنده) در اختیار داریم. این سازنده ها، overload شده اند و باید به هنگام فراخوانی هرکدام از آنها، آرگومان های متفاوتی به آن بدهیم. سازنده ی پیش فرض(default) کلاس GregorianCalendar، یک شیء تقویم ایجاد می کند که حاوی تاریخ و زمان جاری در منطقه ی زمانی محلی ما است، که در کامپیوتر ما مورد استفاده قرار گرفته است. با استفاده از دیگر سازنده ها، می توانیم موارد زیر را مشخص کنیم:

 year, month, date
 year, month, date, hour, minute
 year, month, date, hour, minute, second
 Locale
 TimeZone
 TimeZone, Locale

 بعنوان مثال، با استفاده از دستور زیر، می توانید یک شیء پیش فرض(default)را از کلاس GregorianCalendar ایجاد کنید(نمونه گیری کنید):

GregorianCalendar today = new GregorianCalendar();

 به عنوان یک روش دیگر، در دستورات زیر با استفاده از یک سازنده ی overload شده، از کلاس GregorianCalendar یک شیء ایجاد می کنیم:

GregorianCalendar myGraduationDate = new GregorianCalendar(2012,5,24);

 اگر بخواهیم به مقادیر خاصی مثل روز(day) و ماه(month) و سال(year) دسترسی پیدا کنیم، می توانیم آنها را با استفاده از یک متدِ کلاس به نام ()get  از یک شیءGregorianCalendar به دست بیاوریم. برای انجام این کار، باید آرگومان های خود را به متد ()get بدهیم. شما می توانید با استفاده از دستور زیر، روز از سال را به دست بیاورید:

int dayOfYear = today.get(GregorianCalendar.DAY_OF_YEAR);

متد ()GregorianCalendar getهمواره یک عدد صحیح(integer) را برمی گرداند. در جدول 4.2 تعدادی از آرگومان هایی که می توانیم به متد ()get  بدهیم، نشان داده شده است. توجه داشته باشید که مقادیر ماه، در کلاس GregorianCalendar از 0 تا 11 هستند. بنابراین ماه  ژانویه(January) برابر با 0  است و ماه فوریه(February) برابر با 1 است، و همین طور الی آخر. 

 (جدول 4.2)

 آرگومان  مقدار برگردانده شده توسط متد ()get
 DAY_OF_YEAR  روز از سال. مقداری از 1 تا 366.
 DAY_OF_MONTH  روز از ما. مقداری بین 1 تا 31.
 DAY_OF_WEEK  روز از هفته. مقداری بین 1 تا 7 معادل با SUNDAY و MONDAY و ... و SATURDAY.
 YEAR  سال جاری را برمی گرداند. مثلا 2012.
 MONTH  روز از ماه. مقداری بین 0 تا 11 معادل با JANUARY و FEBRUARY و ... و DECEMBER.
 HOUR  مقداری بین 1 تا 12 که نشان دهنده ی ساعت جاری در A.M یا P.M است. 
 AM_PM  مقداری بین 0 تا 1 که نشان دهنده ی A.M یا P.M است. 
 HOUR_OF_DAY  مقداری بین 0 تا 23 بر اساس ساعت 24 ساعته.
 MINUTE  مقداری بین 0 تا 59 نشان دهنده ی دقیقه ی ساعت.
SECOND ثانیه های دقیقه. مقداری بین 0 تا 59.
MILLISECOND میلی ثانیه ی یک ثانیه. مقداری بین 0 تا 999.

 بعنوان مثال، اگر بخواهیم با استفاده از یک شیء GregorianCalendar  یک اپلیکیشن محاسبه ی سن به نام AgeCalculator می توانیم مانند کدهای تصویر 4.33 عمل کنیم. در این کلاس، یک شیء پیش فرض GregorianCalendar  به نام now ایجاد می شود. سپس از کاربر درخواست می شود که سال تولد خود را وارد کند. سپس سال جاری، با استفاده از متد ()get از شیء now استخراج می شود. حالا با تفریق سال تولد از سال جاری، سن کاربر محاسبه می شود. کاربر عدد 1984 را در سال 2012 وارد کرده است و  در تصویر 4.34 خروجی قابل مشاهده است. 
همان طور که مشاهده می کنید، در اپلیکیشن تصویر 4.33 از متد ()parseInt برای تبدیل رشته ی ورودی کاربر به یک عدد صحیح استفاده شده است. این متد را قبلا در فصل 2 مورد بررسی قرار داده ایم.