کار کردن با تقویم و تاریخ در جاوا معمولاً محل پرسش های فراوان برای برنامه نویسان است. در این مطلب قصد داریم با مثالهایی بسیار ساده، روش کار کردن با تقویم و تاریخ در جاوا را آموزش دهیم.
جاوا برای این منظور کلاسها و امکانات فراوانی دارد. در این مثالها با کلاس های 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
خیلی خوب بود 🙂 با تشکر
قابلی نداشت!
tnx
سپاسگزارم.
سلام. منتظر مطلبی راجع به تاریخ شمسی هستـیـــــــــــــــــــم. مخصوصا معرفی یک دیت پیکر شمسی مناسب
به زودی!
مهندس یهو از اموزش جاوا رفتید سمت تقویم نوشتن در جاوا ..احساس نمیکنید فاصله خیلی زیادی داره با مطلب قبل؟؟؟برای ما مبتیدی ها چاره ای بیاندیشید لطفا
امیدوارم فرصتی دست بده تا اینا رو تموم کنم!
کاش میشد جاوارو به یک حدی میرسوندید که بتونیم تگ های تاریخ هجری رو درک کنیم.با این حال تا همین الانشم خیلی عالی بوده..بسیار متشکرم
سلام خوبید و خسته نباشید
من یک تحقیق استادم داده درمورد همین تقویم در ویزال بیسک که یک خصوصیات و یک مثال بنویسم حالا نمی دونم چکار کنم میشه کمک کنید و یک مثال و یک خصوصیات بهم بگید ممنون می شم اه
month calendar در مورد اینه لفا کمکم کنید موندم چه کنم
سلام محمد
متأسفانه هیج اطلاعی درباره VB ندارم.
سلام
وقتی برنامه رو در جاوا اجرا میکنم تا وقتی که برنامه در حال اجراست اگه بهش بگیم که زمان رو چاپ کنه هر دفعه زمان اجرا شدن برنامه رو چاپ میکنه نه زمان حال رو. برای اینکه زمان همون لحظه رو چاپ کنه باید چیکار کنم؟
کدتون رو بنویسید اینجا تا ببینم مشکلش چیه.
سلام برای هجری شمسی چطو ؟؟