کار کردن با تاریخ و تقویم در جاوا (قسمت اول)

کار کردن با تقویم و تاریخ در جاوا معمولاً محل پرسش های فراوان برای برنامه نویسان است. در این مطلب قصد داریم با مثالهایی بسیار ساده، روش کار کردن با تقویم و تاریخ در جاوا را آموزش دهیم.

Calendar

جاوا برای این منظور کلاسها و امکانات فراوانی دارد. در این مثالها با کلاس های java.util.Date و java.util.Calendar آشنا می شوید.

مثال هایی از کاربرد کلاس Date

مثال ۱: تبدیل یک شی Date به رشته (String):

SimpleDateFormat sdf = new SimpleDateFormat("dd/M/yyyy");
String date = sdf.format(new Date());
System.out.println(date); //15/10/2013

مثال ۲: تبدیل رشته به Date:

SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");
String dateInString = "31-08-1982 10:20:56";
Date date = sdf.parse(dateInString);
System.out.println(date); //Tue Aug 31 10:20:56 SGT 1982

برای مطالعه بیشتر اینجا را ببینید.

مثال ۳: گرفتن زمان فعلی سیستم

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date)); //2013/10/15 16:16:39

مثال هایی از Calendar

مثال ۱: گذفتن زمان فعلی سیستم:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ss");
Calendar calendar = new GregorianCalendar(2013,0,31);
System.out.println(sdf.format(calendar.getTime()));

مثال ۲: مثال ساده ای از کاربرد کلاس Calendar

SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ss");
Calendar calendar = new GregorianCalendar(2013,1,28,13,24,56);

int year       = calendar.get(Calendar.YEAR);
int month      = calendar.get(Calendar.MONTH); // Jan = 0, dec = 11
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
int dayOfWeek  = calendar.get(Calendar.DAY_OF_WEEK);
int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);
int weekOfMonth= calendar.get(Calendar.WEEK_OF_MONTH);

int hour       = calendar.get(Calendar.HOUR);        // 12 hour clock
int hourOfDay  = calendar.get(Calendar.HOUR_OF_DAY); // 24 hour clock
int minute     = calendar.get(Calendar.MINUTE);
int second     = calendar.get(Calendar.SECOND);
int millisecond= calendar.get(Calendar.MILLISECOND);
System.out.println(sdf.format(calendar.getTime()));

System.out.println("year \t\t: " + year);
System.out.println("month \t\t: " + month);
System.out.println("dayOfMonth \t: " + dayOfMonth);
System.out.println("dayOfWeek \t: " + dayOfWeek);
System.out.println("weekOfYear \t: " + weekOfYear);
System.out.println("weekOfMonth \t: " + weekOfMonth);

System.out.println("hour \t\t: " + hour);
System.out.println("hourOfDay \t: " + hourOfDay);
System.out.println("minute \t\t: " + minute);
System.out.println("second \t\t: " + second);
System.out.println("millisecond \t: " + millisecond);

خروجی برنامه فوق:

۲۰۱۳ Feb 28 13:24:56
year 		: ۲۰۱۳
month 		: ۱
dayOfMonth 	: ۲۸
dayOfWeek 	: ۵
weekOfYear 	: ۹
weekOfMonth     : 5
hour 		: ۱
hourOfDay 	: ۱۳
minute 		: ۲۴
second 		: ۵۶
millisecond     : 0

مثال ۳: تنظیم دستی تاریخ:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ss");	

Calendar calendar = new GregorianCalendar(2013,1,28,13,24,56);
System.out.println("#1. " + sdf.format(calendar.getTime()));

//update a date
calendar.set(Calendar.YEAR, 2014);
calendar.set(Calendar.MONTH, 11);
calendar.set(Calendar.MINUTE, 33);

System.out.println("#2. " + sdf.format(calendar.getTime()));

خروجی برنامه فوق:

#۱٫ ۲۰۱۳ Feb 28 13:24:56
#۲٫ ۲۰۱۴ Dec 28 13:33:56

مثال ۴: اضافه یا کم کردن از تاریخ:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd");	

Calendar calendar = new GregorianCalendar(2013,10,28);
System.out.println("Date : " + sdf.format(calendar.getTime()));

//add one month
calendar.add(Calendar.MONTH, 1);
System.out.println("Date : " + sdf.format(calendar.getTime()));

//subtract 10 days
calendar.add(Calendar.DAY_OF_MONTH, -10);
System.out.println("Date : " + sdf.format(calendar.getTime()));

خروجی برنامه فوق:

Date : 2013 Nov 28
Date : 2013 Dec 28
Date : 2013 Dec 18

امیدوارم که این مثالها بتواند به شما در استفاده از این دو کلاس کمک کند. البته آنچه برای ما ایرانیها مهم تر است پشتیبانی از تاریخ هجری شمسی و تقویم جلالی است. در مطلب دیگری، یه کتابخانه عالی برای کار کردن با تاریخ هجری شمسی و تقویم جلالی معرفی خواهم کرد!


 

منبع: http://www.mkyong.com/java/java-date-and-calendar-examples

14 فکر می‌کنند “کار کردن با تاریخ و تقویم در جاوا (قسمت اول)

  1. احسان

    سلام. منتظر مطلبی راجع به تاریخ شمسی هستـیـــــــــــــــــــم. مخصوصا معرفی یک دیت پیکر شمسی مناسب

    پاسخ
  2. مجید

    مهندس یهو از اموزش جاوا رفتید سمت تقویم نوشتن در جاوا ..احساس نمیکنید فاصله خیلی زیادی داره با مطلب قبل؟؟؟برای ما مبتیدی ها چاره ای بیاندیشید لطفا

    پاسخ
  3. مجید

    کاش میشد جاوارو به یک حدی میرسوندید که بتونیم تگ های تاریخ هجری رو درک کنیم.با این حال تا همین الانشم خیلی عالی بوده..بسیار متشکرم

    پاسخ
  4. محمد

    سلام خوبید و خسته نباشید
    من یک تحقیق استادم داده درمورد همین تقویم در ویزال بیسک که یک خصوصیات و یک مثال بنویسم حالا نمی دونم چکار کنم میشه کمک کنید و یک مثال و یک خصوصیات بهم بگید ممنون می شم اه
    month calendar در مورد اینه لفا کمکم کنید موندم چه کنم

    پاسخ
  5. علی

    سلام
    وقتی برنامه رو در جاوا اجرا میکنم تا وقتی که برنامه در حال اجراست اگه بهش بگیم که زمان رو چاپ کنه هر دفعه زمان اجرا شدن برنامه رو چاپ میکنه نه زمان حال رو. برای اینکه زمان همون لحظه رو چاپ کنه باید چیکار کنم؟

    پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *