معرفی کامل کلاسهای Date و Calendar در جاوا
جلسات دوره
مهدی عباسی
مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مشاهده رزومه
معرفی کامل کلاسهای Date و Calendar در جاوا
در این جلسه میخواهیم کلاس Date که برای کار با زمان و تاریخ استفاده میشود و درون پکیچ Java.util قرار دارد.
تاریخ و زمان در پروژه ها کاربرد زیادی دارند به عنوان مثال برای دریافت داده در تاریخ خاص، چک کردن فاصله زمانی و...
یکی از مشکلاتی که ایرانیان با تاریخ دارند این است که تاریخ کشور ما بر اساس هجری شمسی است و تاریخ بین المللی بر اساس تاریخ میلادی است. ما در محیطهای ذخیره سازی مانند: فایل ها، دیتابیس و... تاریخ را بر اساس تاریخ میلادی ذخیره میکنیم و برای تبدیل تاریخ میلادی به تاریخ شمسی باید کتابخانه یا کلاس هایی را به برنامه اضافه کنیم تا این تبدیل را برای ما انجام دهند.
Date date1=new Date();
System.out.println(date1);
خروجی
Thu Aug 19 12:51:58 IRDT 2021
تابع سازنده Date میتواند یک عدد بر حسب میلی ثانیه دریافت کند و از تاریخ 1970/01/01 تاریخ را محاسبه میکند.
Date date2=new Date(1435678934);
System.out.println(date2);
خروجی
Tue Jan 06 04:31:18 IRST 1970
متد های مهم کلاس Date
متد after
این متد یک شی از Date دریافت میکند و بررسی میکند مقدار فعلی بعد تاریخ وارد شده است یا خیر، خروجی این تابع boolean است.
Date date1=new Date();
Date date2=new Date(1435678934);
System.out.println(date1.after(date2));
خروجی
true
متد before
این متد یک شی از Date دریافت میکند و بررسی میکند مقدار فعلی قبل از تاریخ وارد شده است یا خیر، خروجی این تابع boolean است.
Date date1=new Date();
Date date2=new Date(1435678934);
System.out.println(date1.before(date2));
خروجی
false
متد equlas
این متد یک شی از Date دریافت میکند و بررسی میکند با مقدار فعلی برابر است یا خیر. خروجی این تابع boolean است.
Date date1=new Date();
Date date2=new Date(1435678934);
System.out.println(date1.equals(date2));
خروجی
false
متد compareTo
این متد یک شی از Date دریافت میکند و اگر با مقدار فعلی برابر باشد عدد 0 برمیگرداند، اگر از مقدار فعلی بزرگتر باشد عدد -1 برمیگرداند و اگر کوچکتر از مقدار فعلی باشد عدد 1 برمی گرداند.
Date date1=new Date();
Date date2=new Date(1435678934);
System.out.println(date1.compareTo(date2));
خروجی
1
متد getTime
این متد تاریخ و زمان فعلی را به میلی ثانیه تبدیل میکند، خروجی این تابع lang است.
Date date1=new Date();
System.out.println(date1.getTime());
خروجی
1629361623271
متد setTime
این متد برای ست کردن تاریخ استفاده میشود و از تاریخ 1970/01/01 این تاریخ را محاسبه میکند.
Date date1=new Date();
date1.setTime(0);
System.out.println(date1);
خروجی
Tue Jan 01 03:30:00 IRST 1970
برای چاپ تاریخ با فرمت دلخواه می توان از کلاس SimpleDateFormat استفاده کرد.
Date date1=new Date();
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy/MM/dd");
System.out.println(simpleDateFormat.format(date1));
خروجی
2021/08/19
قالبهای نمایش تاریخ و زمان:
Pattern |
Example |
dd-MM-yy |
31-01-12 |
dd-MM-yyyy |
31-01-2012 |
MM-dd-yyyy |
01-31-2012 |
yyyy-MM-dd |
2012-01-31 |
yyyy-MM-dd HH:mm:ss |
2012-01-31 23:59:59 |
yyyy-MM-dd HH:mm:ss.SSS |
2012-01-31 23:59:59.999 |
yyyy-MM-dd HH:mm:ss.SSSZ |
2012-01-31 23:59:59.999+0100 |
EEEEE MMMMM yyyy HH:mm:ss.SSSZ |
Saturday November 2012 10:45:42.720+0100 |
تا اینجا با استفاده از کلاس Date توانستیم با تاریخ و زمان کار کنیم، اما کلاس Date به دلیل اینکه با عدد میلی ثانیه کار میکند برای ما خیلی کاربردی نیست. برای استفاده از ابزارهای بیشتر از تاریخ و زمان از کلاس Calender استفاده میکنیم.
کلاس Calender درون پکیج java.util قرار دارد و با استفاده از این کلاس بهتر میتوان از تاریخ و زمان استفاده کرد به عنوان مثال میتوان استاندارد تاریخ و زمان را تغییر داد و یا منطقه جغرافیایی اضافه کرد و...
برای ساخت شی از کلاس Calender نمیتوان آن را با استفاده از new مقدار دهی کرد و باید با استفاده از متد استاتیک getInstance آن را مقدار دهی کرد مشابه زیر:
Calendar calendar1=Calendar.getInstance();
متدهای کلاس Calender
متد getTime
این متد تاریخ فعلی را برمیگرداند.
Calendar calendar1=Calendar.getInstance();
System.out.println(calendar1.getTime());
خروجی
Thu Aug 19 13:06:59 IRDT 2021
متد get
این متد یک عدد دریافت میکند و بخشی از تاریخ و زمان را برمیگرداند. درون کلاس Calender فیلدهای استاتیک وجود دارد که نماد روز، ماه، سال، ساعت، دقیقه، ثانیه، میلی ثانیه و.. است و میتوان به عنوان ورودی این متد استفاده کرد.
Calendar calendar1=Calendar.getInstance();
System.out.println(calendar1.get(Calendar.YEAR));
System.out.println(calendar1.get(Calendar.MONTH));
System.out.println(calendar1.get(Calendar.DAY_OF_MONTH));
System.out.println(calendar1.get(Calendar.DAY_OF_WEEK));
System.out.println(calendar1.get(Calendar.HOUR));
System.out.println(calendar1.get(Calendar.MINUTE));
System.out.println(calendar1.get(Calendar.SECOND));
System.out.println(calendar1.get(Calendar.MILLISECOND));
خروجی
2021
7
19
5
1
10
25
95
متد getMinimum
این متد یک عدد دریافت میکند و کمترین مقداری که آن تاریخ و زمان میتواند داشته باشد را برمیگرداند.
Calendar calendar1=Calendar.getInstance();
System.out.println(calendar1.getMinimum(Calendar.YEAR));
System.out.println(calendar1.getMinimum(Calendar.MONTH));
System.out.println(calendar1.getMinimum(Calendar.DAY_OF_WEEK));
System.out.println(calendar1.getMinimum(Calendar.DAY_OF_MONTH));
خروجی
1
0
1
1
همانطور که مشاهده میکنید کمترین مقدار سال برابر 1 است و کمترین مقدار ماه برابر 0، میتوانید برای بقیه حالتها نیز از این متد استفاده کنید و کمترین مقداری که میتواند داشته باشد را مشاهده کنید.
متد set
این متد دو پارامتر دریافت میکند و پارامتر اول یک عدد که نشانگر روز، ماه، سال و.. دریافت میکند و پارامتر دوم مقداری است که میخواهید جایگزین شود.
Calendar calendar1=Calendar.getInstance();
calendar1.set(Calendar.YEAR,1);
System.out.println(calendar1.getTime());
خروجی
Fri Aug 19 13:20:35 IRST 1
متد add
این متد برای اضافه کردن به واحدهای زمانی استفاده میشود این متد دو پارامتر دریافت میکند پارامتر اول نشانگر روز، ماه، سال و.. و پارامتر دوم تعداد واحدی که میخواهید اضافه شود.
Calendar calendar1=Calendar.getInstance();
System.out.println(calendar1.getTime());
calendar1.add(Calendar.YEAR,1);
calendar1.add(Calendar.DAY_OF_MONTH,20);
خروجی
Thu Aug 19 13:06:59 IRDT 2021 //تاریخ فعلی
Thu Sep 08 13:22:23 IRDT 2022
متد equals
این متد برای مقایسه برابری دو تاریخ استفاده میشود و خروجی boolean برمیگرداند.
Calendar calendar1=Calendar.getInstance();
calendar1.set(Calendar.YEAR,1);
Calendar calendar2=Calendar.getInstance();
System.out.println(calendar1.equals(calendar2));
خروجی
false
متد compareTo
این متد یک پارامتر از نوع calender دریافت میکند و با calender فعلی بررسی میکند اگر برابر باشد مقدار 0 برمیگرداند، اگر مقدار فعلی بزرگ تر باشد عدد 1 برمیگرداند و اگر مقدار فعلی کوچکتر باشد عدد -1 برمیگرداند.
Calendar calendar1=Calendar.getInstance();
calendar1.set(Calendar.YEAR,1);
Calendar calendar2=Calendar.getInstance();
System.out.println(calendar1.compareTo(calendar2));
خروجی
1
در ادامه یک روش کوتاه و کاربردی برای بدست آوردن اختلاف تاریخ را بررسی میکنیم.
در این جلسه با کلاس Date و کلاس Calender آشنا شدیم و با توابع مهم و کاربردی این کلاس ها کار کردیم.
باعث افتخار هست که توانستیم با یک دوره جامع و کامل دیگر در خدمت شما عزیزان باشیم. این دوره فعلا شامل 56 جلسه آموزش با 1627 دقیقه است و در حال برگزاری و اضافه شدن مطالب می باشد، حتی ممکن است زمانی که این متن را می خوانید تعداد جلسات و تایم آن بیشتر نیز شده باشد، شما میتوانید با تهیه این دوره به همه جلسات و بخش های آن دسترسی داشته باشید.
شما درسمنی های عزیز هر گونه سوال یا ابهامی از این جلسه داشتید میتوانید به انجمن برنامه نویسان جاوا مراجعه کنید و سوالات خود را بپرسید.
ممنون از همراهی شما
نظرات دانشجویان
شیوه ی تدریس استاد واقعا خیلی خوبه قیمتش هم واقعا مناسبه .خیلی ممنون از زحماتتون
سلام عادل جان، خیلی از شما ممنون هستیم، بله ما نیز مثل شما از تدریس مهندس عباسی لذت می بریم و این حس خیلی خوبی است که شما نیز همواره رضایت کافی را از نوع تدریس و قیمت آن دارید.
سلام خسته نباشید. شما می خواستید اختلاف دو تاریخ را بدست آورید. با روش شما اختلاف بر اساس سال و ماه و روز بدست می آید ولی بر اساس ساعت بدست می آید در مسئله ی پارکینگ این موضوع خیلی مهم است لطفا آموزش دهید اختلاف دو تاریخ را بر اساس ساعت بدست آوریم.
سلام دوست عزیز حتما بررسی می شود.
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.