[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
جاوا متغیر گروه Date را در پوشه ی java.util ارائه می دهد. این گروه تاریخ و زمان جاری را کپسوله می کند (encapsulate).
گروه Date دو سازنده را پشتیبانی می کند. اولین سازنده آبجکت را با تاریخ و زمان جاری مقدار دهی می کند.
Date( )
سازنده ی بعدی یک [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]را می پذیرد که برابر تعداد هزارم ثانیه هایی است که از نیمه شب اول ژانویه ی 1970 گذشته است.
Date(long millisec)
زمانی که شما یک Date object در دسترس دارید، می توانید برای بازی با تاریخ ها هرکدام از متودهای پشتیبانی زیر را فرا بخوانید:
SN |
Methods with Description |
1 |
boolean after(Date date)
اگر فراخوانی Date object حاوی یک تاریخ باشد که دیرتر از تاریخی است که توسط date مشخص شده، true گزارش می دهد، در غیر این صورت false. |
2 |
boolean before(Date date)
اگر فراخوانی Date object حاوی یک تاریخ باشد که رودتر از تاریخی است که توسط date مشخص شده، true گزارش می دهد، در غیر این صورت false. |
3 |
Object clone( )
فراخوانی Date object را تکرار می کند. |
4 |
int compareTo(Date date)
مقدار فراخوانی آبجکت را با مقدار مربوط به تاریخ مقایسه می کند. اگر مقادیر برابر باشند، 0 گزارش می دهد. اگر آبجکت فراخوانی زودتر از تاریخ باشد، یک مقدار منفی گزارش می دهد. اگر آبجکت فراخوانی دیرتر از تاریخ باشد، یک مقدار مثبت گزارش می دهد. |
5 |
int compareTo(Object obj)
اگر obj از گروه Date باشد، عینا برای مقایسه ی To(Date) عمل می کند. در غیر این صورت یک ClassCastException وارد می کند. |
6 |
boolean equals(Object date)
اگر فراخوانی Date object حاوی همان تاریخ و زمانی باشد که توسط date مشخص شد، true گزارش می دهد، در غیر اینصورت false گزارش می دهد. |
7 |
long getTime( )
تعداد هزارم ثانیه هایی را که از اول ژانویه ی 1970 سپری شده، نشان می دهد. |
8 |
int hashCode( )
یک کد hash برای فراخوانی آبجکت گزارش می دهد. |
9 |
void setTime(long time)
تاریخ و زکان را طوریکه با time مشخص شده، تنظیم می کند، که یک زمان سپری شده به هزارم ثانیه از نیمه شب اول ژانویه 1970 نشان می دهد. |
10 |
String toString( )
آبجکت Date فراخوانی شده را به یک رشته تغییر می دهد و نتیجه را بازمی گرداند. |
به دست آوردن Date و Time فعلی:
به دست آوردن تاریخ و زمان فعلی در جاوا بسیار آسان می باشد. شما می توانید از یک آبجکت Date ساده با متود toString() استفاده کنید تا تاریخ و زمان را مانند زیر چاپ کنید:
کد:
import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display time and date using toString() System.out.println(date.toString()); }}
این کد نتیجه ی زیر را تولید می کند:
کد:
Mon May 04 09:51:52 CDT 2009
مقایسه ی تاریخ:
سه روش برای مقایسه ی تاریخ وجود دارد که در زیر مشاهده می کنید:
- می توانید برای تعیین تعداد هزارم ثانیه هایی که از نیمه شب اول ژانویه ی 1970 گذشته است، برای هر دو آبجکت، از getTime( ) استفاده کنید و سپس این دو مقدار را با یکدیگر مقایسه کنید.
- می توانید از متودهای before( ), after( ), و equals( ) استفاده کنید. به عنوان مثال از آنجایی که دوازدهم ماه قبل از هجدهم می آید، عبارت جدید before( ), after( ), and equals( ) دارای گزارش true می باشد.
- شما می توانید از متود compareTo( ) استفاده کنید که توسط اینترفیس Comparable تعریف شده و به وسیله ی Date اجرا می شود.
طراحی تاریخ با استفاده از SimpleDateFormat:
SimpleDateFormat یک گروه ملموس برای طراحی و تجزیه ی تاریخ ها به یک روش هوشمند داخلی می باشد. SimpleDateFormat به شما اجازه می دهد تا با انتخاب هرکدام از الگوهای تعریف شده توسط کاربر برای طراحی date – time شروع کنید.
کد:
import java.util.*;import java.text.*; public class DateDemo { public static void main(String args[]) { Date dNow = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz"); System.out.println("Current Date: " + ft.format(dNow)); }}
این کد نتیجه ی زیر را به دنبال دارد:
کد:
Current Date: Sun 2004.07.18 at 04:14:09 PM PDT
فرمت ساده ی کدهای [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]:
برای تعیین فرمت زمان از یک رشته الگوی زمان استفاده کنید. در این الگو همه ی حروف ASCII به عنوان حروف پیش فرض در نظر گرفته شده اند که مانند زیر تعریف شده اند:
Character |
Description |
Example |
G |
Era designator |
AD |
y |
Year in four digits
سال چهار رقمی |
2001 |
M |
Month in year
ماه در سال |
July or 07 |
d |
Day in month
روز در ماه |
10 |
h |
Hour in A.M./P.M. (1~12)
ساعت در صبح / بعد از ظهر |
12 |
H |
Hour in day (0~23)
ساعت در روز |
22 |
m |
Minute in hour
دقیقه در ساعت |
30 |
s |
Second in minute
ثانیه در دقیقه |
55 |
S |
Millisecond
هزارم ثانیه |
234 |
E |
Day in week
روز در هفته |
Tuesday |
D |
Day in year
روز در سال |
360 |
F |
Day of week in month
روز هفته در ماه |
2 (second Wed. in July) |
w |
Week in year
هفته در سال |
40 |
W |
Week in month
هفته در ماه |
1 |
a |
A.M./P.M. marker
نشانگر قبل از ظهر / بعد از ظهر |
PM |
k |
Hour in day (1~24)
ساعت در روز |
24 |
K |
Hour in A.M./P.M. (0~11)
ساعت قبل از ظهر / بعد از ظهر |
10 |
z |
Time zone
منطقه ی زمانی |
Eastern Standard Time |
' |
Escape for text |
Delimiter |
" |
Single quote |
` |
طراحی تاریخ با استفاده از printf:
طراحی تاریخ و زمان با استفاده از متود printf خیلی ساده قابل انجام می باشد. شما می توانید از فرمت دو حرفی، استفاده کنید که با حرف t شروع می شود و با یکی از حروف ارائه شده در جدول زیر خاتمه می یابد. به عنوان مثال:
کد:
import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display time and date using toString() String str = String.format("Current Date/Time : %tc", date ); System.out.printf(str); }}
این مثال نتیجه ی زیر را به دنبال خواهد داشت:
کد:
Current Date/Time : Sat Dec 15 16:37:57 MST 2012
اگر مجبور باشید برای طراحی هر بخش، تاریخ را چند بار ارائه دهید، ممکن است کمی احمقانه به نظر برسد. به همین دلیل یک رشته می تواند ایندکس مربوط به argument را نشان دهد تا طراحی شود.
ایندکس باید فورا با % دنبال شود و با $ پایان یابد. برای مثال:
کد:
import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display time and date using toString() System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date); }}
این مثال نتیجه ی زیر را به دنبال دارد:
کد:
Due date: February 09, 2004
متناوبا می توانید از < flag نیز استفاده کنید. این نشان می دهد که همان argument در فرمت تعیین شده ی قبل باید مجددا مورد استفاده قرار بگیرد. برای مثال:
کد:
import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display formatted date System.out.printf("%s %tB %<te, %<tY", "Due date:", date); }}
این مثال نتیجه ی زیر را به دنبال دارد:
کد:
Due date: February 09, 2004
کاراکترهای تبدیل Date و Time:
Character |
Description |
Example |
c |
Complete date and time
تاریخ و زمان کامل |
Mon May 04 09:51:52 CDT 2009 |
F |
ISO 8601 date |
2004-02-09 |
D |
U.S. formatted date (month/day/year)
فرمت امریکایی تاریخ |
02/09/2004 |
T |
24-hour time
زمان 24 ساعت |
18:05:19 |
r |
12-hour time
زمان 12 ساعت |
06:05:19 pm |
R |
24-hour time, no seconds
زمان 24 ساعت، بدون ثانیه |
18:05 |
Y |
Four-digit year (with leading zeroes)
زمان چهار رقمی با صفر |
2004 |
y |
Last two digits of the year (with leading zeroes)
دو رقم آخر سال ( با صفر) |
04 |
C |
First two digits of the year (with leading zeroes)
دو رقم اول سال (با صفر) |
20 |
B |
Full month name
نام کامل ماه |
February |
b |
Abbreviated month name
نام اختصاری ماه |
Feb |
m |
Two-digit month (with leading zeroes)
ماه دو رقمی ( با صفر) |
02 |
d |
Two-digit day (with leading zeroes)
روز دو رقمی (با صفر) |
03 |
e |
Two-digit day (without leading zeroes)
روز دو رقمی (بدون صفر) |
9 |
A |
Full weekday name
نام کامل روز های هفته |
Monday |
a |
Abbreviated weekday name
نام اختصاری روزهای هفته |
Mon |
j |
Three-digit day of year (with leading zeroes)
روز سه رقمی سال (با صفر) |
069 |
H |
Two-digit hour (with leading zeroes), between 00 and 23
ساعت دو رقمی (با صفر) بین 00 و 23. |
18 |
k |
Two-digit hour (without leading zeroes), between 0 and 23
ساعت دو رقمی (بدون صفر)، بین 0 و 23 |
18 |
I |
Two-digit hour (with leading zeroes), between 01 and 12
ساعت دو رقمی (با صفر)، بین 01 و 12. |
06 |
l |
Two-digit hour (without leading zeroes), between 1 and 12
ساعت دو رقمی (بدون صفر)، بین 1 و 12. |
6 |
M |
Two-digit minutes (with leading zeroes)
دقیقه ی دو رقمی (با صفر) |
05 |
S |
Two-digit seconds (with leading zeroes)
ثانیه ی دو رقمی (با صفر) |
19 |
L |
Three-digit milliseconds (with leading zeroes)
هزارم ثانیه سه رقمی (با صفر) |
047 |
N |
Nine-digit nanoseconds (with leading zeroes)
نانو ثانیه نه رقمی (با صفر) |
047000000 |
P |
Uppercase morning or afternoon marker
نشانگر صبح یا بعداز ظهر با حروف بزرگ |
PM |
p |
Lowercase morning or afternoon marker
نشانگر صبح یا بعداز ظهر با حروف کوچک |
pm |
z |
RFC 822 numeric offset from GMT
افست عددی RFC 822 از GMT |
-0800 |
Z |
Time zone
منطقه ی زمانی |
PST |
s |
Seconds since 1970-01-01 00:00:00 GMT |
1078884319 |
Q |
Milliseconds since 1970-01-01 00:00:00 GMT |
1078884319047 |
گروه های مفید دیگری در ارتباط با تاریخ و زمان وجود دارند. برای جزئیات بیشتر می توانید به مستندات استاندارد جاوا مراجعه کنید.
تجزیه ی رشته ها به تاریخ ها:
گروه SimpleDateFormat دارای متودهای اضافه، به ویژه parse( ) می باشد که سعی می کند یک رشته را طبق فرمت ذخیره شده در آبجکت SimpleDateFormat تجزیه کند. برای مثال:
کد:
import java.util.*;import java.text.*; public class DateDemo { public static void main(String args[]) { SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); String input = args.length == 0 ? "1818-11-11" : args[0]; System.out.print(input + " Parses as "); Date t; try { t = ft.parse(input); System.out.println(t); } catch (ParseException e) { System.out.println("Unparseable using " + ft); } }}
یک نمونه اجرا از مثال بالا نتیجه ی زیر را به دنبال خواهد داشت:
$ java DateDemo1818-11-11 Parses as Wed Nov 11 00:00:00 GMT 1818$ java DateDemo 2007-12-012007-12-01 Parses as Sat Dec 01 00:00:00 GMT 2007
خوابیدن برای مدتی:
شما می توانید برای هر مدت زمانی که دلخواهتان است، از یک هزارم ثانیه تا طول دوره ی زندگی کامپیوتر خود، بخوابید. برای مثال برنامه ی زیر به مدت 10 ثانیه به خواب می رود:
کد:
import java.util.*; public class SleepDemo { public static void main(String args[]) { try { System.out.println(new Date( ) + "\n"); Thread.sleep(5*60*10); System.out.println(new Date( ) + "\n"); } catch (Exception e) { System.out.println("Got an exception!"); } }}
این مثال نتیجه ی زیر را به دنبال دارد:
Sun May 03 18:04:41 GMT 2009 Sun May 03 18:04:51 GMT 2009
اندازه گیری زمان سپری شده:
گاهی اوقات لازم است یک نقطه ی زمانی را به هزارم ثانیه اندازه بگیرید. بنابراین اجازه بدهید مثال بالا را یک بار دیگر بازنویسی کنیم:
کد:
import java.util.*; public class DiffDemo { public static void main(String args[]) { try { long start = System.currentTimeMillis( ); System.out.println(new Date( ) + "\n"); Thread.sleep(5*60*10); System.out.println(new Date( ) + "\n"); long end = System.currentTimeMillis( ); long diff = end - start; System.out.println("Difference is : " + diff); } catch (Exception e) { System.out.println("Got an exception!"); } }}
این مثال نتیجه ی زیر را تولید خواهد کرد:
Sun May 03 18:16:51 GMT 2009 Sun May 03 18:16:57 GMT 2009 Difference is : 5993
گروه GregorianCalendar (تقویم میلادی):
GregorianCalendar یک اجرای ملموس از یک گروه Calendar است که یک تقویم میلادی معمولی را که با آن آشنا هستید، اجرا می کند. من در مورد گروه Calander در این آموزش بحث نکردم، شما می توانید در این مورد مستندسازی استاندارد جاوا را مورد بررسی قرار دهید.
متود getInstance( ) از تقویم یک GregorianCalendar را بازمی گرداند که با تاریخ و زمان فعلی در محل و منطقه ی زمانی پیش فرض مقدار دهی شده است: AD و BC. اینها نشانگر دو عصر تعریف شده توسط تقویم میلادی می باشند.
چندین سازنده برای آبجکت های GregorianCalendar وجود دارد:
SN |
Constructor with Description |
1 |
GregorianCalendar()
با استفاده از زمان حاضر در منطقه ی زمانی پیش فرض با محل پیش فزض، یک GregorianCalendar پیش فرض می سازد. |
2 |
GregorianCalendar(int year, int month, int date)
یک GregorianCalendar پیش فرض با تاریخ تنظیم شده ی ارائه شده در منطقه ی زمانی پیش فرض با محل پیش فرض، یک GregorianCalendar می سازد. |
3 |
GregorianCalendar(int year, int month, int date, int hour, int minute)
Constructs a GregorianCalendar with the given date and time set for the default time zone with the default locale.
با تاریخ و زمان ارائه شده برای منطقه ی زمانی پیش فرض در محل پیش فرض، یک GregorianCalendar می سازد. |
4 |
GregorianCalendar(int year, int month, int date, int hour, int minute, int second)
با تاریخ و زمان تنظیم شده برای منطقه ی زمانی پیش فرض در محل پیش فرض، یک GregorianCalendar می سازد. |
5 |
GregorianCalendar(Locale aLocale)
براساس زمان کنونی در منطقه ی زمانی پیش فرض با محل پیش فرض، یک GregorianCalendar می سازد. |
6 |
GregorianCalendar(TimeZone zone)
براساس زمان کنونی در منطقه ی زمانی پیش فرض با محل پیش فرض، یک GregorianCalendar می سازد. |
7 |
GregorianCalendar(TimeZone zone, Locale aLocale)
براساس زمان کنونی در منطقه ی زمانی پیش فرض با محل پیش فرض، یک GregorianCalendar می سازد. |
در اینجا لیستی از متودهای مفید ارائه شده توسط گروه GregorianCalendar را مشاهده می کنید:
SN |
Methods with Description |
1 |
void add(int field, int amount)
براساس قوانین تقویم، مقدار مشخصی زمان را به فیلد ارائه شده ی زمان اضافه می کند. |
2 |
protected void computeFields()
UTC را به هزارم ثانیه به مقادیر فیلد زمان تبدیل می کند. |
3 |
protected void computeTime()
تبدیل UTC در هزارم ثانیه به مقادیر فیلد زمان را لغو می کند. |
4 |
boolean equals(Object obj)
GregorianCalendar را با یک آبجکت مرجع مقایسه می کند. |
5 |
int get(int field)
مقدار را برای یک فیلد زمان ارائه شده به دست می آورد. |
6 |
int getActualMaximum(int field)
حداکثر مقداری را که این فیلد می تواند داشته باشد، گزارش می دهد، با توجه به تاریخ جاری. |
7 |
int getActualMinimum(int field)
حداقل مقداری را که این فیلد می تواند داشته باشد، گزارش می دهد، با توجه به تاریخ جاری. |
8 |
int getGreatestMinimum(int field)
بالاترین minimum را برای فیلد ارائه شده گزارش می دهد، اگر متفوت باشد. |
9 |
Date getGregorianChange()
تاریخ تغییر Gregorian Calendar را به دست می آورد. |
10 |
int getLeastMaximum(int field)
کمترین maximum را برای فیلد ارائه شده گزارش می دهد، اگر متفاوت باشد. |
11 |
int getMaximum(int field)
مقدار حداکثر را برای فیلد ارائه شده گزارش می دهد. |
12 |
Date getTime()
زمان جاری این تقویم را به دست می آورد. |
13 |
long getTimeInMillis()
زمان جاری این تقویم را به عنوان یک long به دست می آورد. |
14 |
TimeZone getTimeZone()
منطقه ی زمانی را به دست می آورد. |
15 |
int getMinimum(int field)
حداقل مقدار را برای فیلد ارائه شده گزارش می دهد. |
16 |
int hashCode()
hashCode را لغو می کند. |
17 |
boolean isLeapYear(int year)
اگر سال ارائه شده کبیسه باشد، مشخص می کند. |
18 |
void roll(int field, boolean up)
یک واحد مجزا از زمان را به به فیلد ارائه شده اضافه می کند و یا از آن کم می کند، بدون اینکه در فیلدهای بزرگتر تغییری ایجاد شود. |
19 |
void set(int field, int value)
فیلد زمان را با استفاده از مقدار ارائه شده تنظیم می کند. |
20 |
void set(int year, int month, int date)
مقادیری برای فیلدهای year، month و date تنظیم می کند. |
21 |
void set(int year, int month, int date, int hour, int minute)
مقادیری برای فیلدهای year، month ، hour وminute، date تنظیم می کند. |
22 |
void set(int year, int month, int date, int hour, int minute, int second)
مقادیری برای فیلدهای year، month و date، hour، minute و second تنظیم می کند. |
23 |
void setGregorianChange(Date date)
تاریخ تغییر GregorianCalendar را تنظیم می کند. |
24 |
void setTime(Date date)
زمان فعلی این تقویم را با تاریخ ارائه شده تنظیم می کند. |
25 |
void setTimeInMillis(long millis)
زمان فعلی این تقویم را از مقدار ارائه شده ی long تنظیم می کند. |
26 |
void setTimeZone(TimeZone value)
مطقه ی زمانی را با مقدار منطقه ی زمانی ارائه شده تنظیم می کند. |
27 |
String toString()
یک رشته که نشانگر این تقویم می باشد را گزارش می دهد. |
مثال:
کد:
import java.util.*; public class GregorianCalendarDemo { public static void main(String args[]) { String months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; int year; // Create a Gregorian calendar initialized // with the current date and time in the // default locale and timezone. GregorianCalendar gcalendar = new GregorianCalendar(); // Display current time and date information. System.out.print("Date: "); System.out.print(months[gcalendar.get(Calendar.MONTH)]); System.out.print(" " + gcalendar.get(Calendar.DATE) + " "); System.out.println(year = gcalendar.get(Calendar.YEAR)); System.out.print("Time: "); System.out.print(gcalendar.get(Calendar.HOUR) + ":"); System.out.print(gcalendar.get(Calendar.MINUTE) + ":"); System.out.println(gcalendar.get(Calendar.SECOND)); // Test if the current year is a leap year if(gcalendar.isLeapYear(year)) { System.out.println("The current year is a leap year"); } else { System.out.println("The current year is not a leap year"); } }}
این مثال نتیجه ی زیر را به دنبال دارد:
Date: Apr 22 2009Time: 11:25:27The current year is not a leap year
برای داشتن لیست کاملی از ثابت در دسترس در گروه [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] می توانید به اسناد استاندارد جاوا مراجعه کنید.
سلام دوستان عزیز، من این مطالب رو از سایت [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] مطالعه کردم. بنظرم مفید و کاربردی هستند. شما هم بخونید.تشکر
علاقه مندي ها (Bookmarks)