التعامل مع الوقت والتاريخ في برمجة جافا Java Date and Time
التعامل مع الوقت والتاريخ في برمجة جافا
Java Date and Time
التعامل مع الوقت والتاريخ في برمجة جافا Java Date and Time
يوفر Java فئة التاريخ المتاحة في حزمة java.util ، هذه الفئة تتضمن التاريخ والوقت الحاليين.
تدعم فئة التاريخ منشأين كما هو موضح في الجدول التالي.
الرقم. | النشيد والوصف |
---|---|
1 |
Date( )
يقوم المنشئ بتهيئة الكائن بالتاريخ والوقت الحاليين.
|
2 |
Date(long millisec)
يقبل هذا المُنشئ وسيطة تساوي عدد المللي ثانية التي انقضت منذ منتصف ليل 1 يناير 1970.
|
فيما يلي دوال فئة التاريخ.
الرقم. | الدالة والوصف |
---|---|
1 |
boolean after(Date date)
إرجاع صحيح إذا احتوى كائن تاريخ الاستدعاء على تاريخ يتجاوز التاريخ المحدد بالتاريخ ، وإلا فإنه سيعود خطأ.
|
2 |
boolean before(Date date)
إرجاع صحيح إذا احتوى كائن تاريخ الاستدعاء على تاريخ أقدم من التاريخ المحدد بالتاريخ ، وإلا فإنه سيعود خطأ.
|
3 |
Object clone( )
يكرر كائن تاريخ الاستدعاء.
|
4 |
int compareTo(Date date)
يقارن قيمة كائن الاستدعاء بقيمة التاريخ. إرجاع 0 إذا كانت القيم متساوية. تُرجع قيمة سالبة إذا كان كائن الاستدعاء أقدم من التاريخ. تُرجع قيمة موجبة إذا كان كائن الاستدعاء متأخراً عن التاريخ.
|
5 |
int compareTo(Object obj)
يعمل بشكل مماثل للمقارنة (التاريخ) إذا كان obj من فئة التاريخ. خلاف ذلك ، فإنه يلقي ClassCastException.
|
6 |
boolean equals(Object date)
إرجاع صحيح إذا احتوى كائن تاريخ الاستدعاء على نفس الوقت والتاريخ كما هو محدد بواسطة التاريخ ، وإلا فإنه سيعود خطأ.
|
7 |
long getTime( )
يُرجع عدد المللي ثانية التي انقضت منذ 1 يناير 1970.
|
8 |
int hashCode( )
إرجاع كود تجزئة لكائن الاستدعاء.
|
9 |
void setTime(long time)
يضبط الوقت والتاريخ كما هو محدد بواسطة الوقت ، والذي يمثل وقتًا منقضيًا بالميلي ثانية من منتصف ليل 1 يناير 1970.
|
10 |
String toString( )
يحول كائن تاريخ الاستدعاء إلى سلسلة ويعيد النتيجة.
|
الحصول على تاريخ ووقت الحالي Getting Current Date and Time
هذه طريقة سهلة للغاية للحصول على التاريخ والوقت الحاليين في Java. يمكنك استخدام كائن Date بسيط باستخدام طريقة toString () لطباعة التاريخ والوقت الحاليين كما يلي -
مثال Example
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()); } }
المخرجات
on May 04 09:51:52 CDT 2009
مقارنة التاريخ Date Comparison
فيما يلي الطرق الثلاث لمقارنة تاريخين -
يمكنك استخدام getTime () للحصول على عدد المللي ثانية المنقضية منذ منتصف ليل 1 يناير 1970 لكلا الكائنين ثم مقارنة هاتين القيمتين.
يمكنك استخدام الأساليب قبل () ، وبعد () ، ويساوي (). لأن الثاني عشر من الشهر يأتي قبل الثامن عشر ، على سبيل المثال ، التاريخ الجديد (99 ، 2 ، 12). قبل (التاريخ الجديد (99 ، 2 ، 18)) يعود صحيحاً.
يمكنك استخدام أسلوب comparTo () ، والذي يتم تعريفه بواسطة واجهة قابلة للمقارنة ويتم تنفيذه بواسطة التاريخ.
تنسيق التاريخ مثال بسيط Date Formatting Using SimpleDateFormat
مثال Example
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
لتحديد تنسيق الوقت ، استخدم سلسلة نمط الوقت. في هذا النمط ، يتم حجز جميع أحرف ASCII كأحرف نقش ، والتي يتم تعريفها على النحو التالي -
الرمز | الوصف | مثال |
---|---|---|
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 |
' | الهروب للنص | Delimiter |
" | اقتباس واحد | ` |
تنسيق التاريخ باستخدام Date Formatting Using printf
يمكن إجراء تنسيق التاريخ والوقت بسهولة بالغة باستخدام طريقة printf. يمكنك استخدام تنسيق مؤلف من حرفين ، يبدأ بـ t وينتهي بأحد أحرف الجدول كما هو موضح في التعليمة البرمجية التالية.
مثال Example
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 String str = String.format("Current Date/Time : %tc", date ); System.out.printf(str); } }
المخرجات
Current Date/Time : Sat Dec 15 16:37:57 MST 2012
سيكون سخيفا بعض الشيء إذا كان لديك لتوفير التاريخ
عدة مرات لتنسيق كل جزء. لهذا السبب ، يمكن أن تشير سلسلة التنسيق إلى فهرس الوسيطة المراد تنسيقها.
يجب أن يتبع الفهرس النسبة المئوية على الفور ويجب أن يتم إنهائه بـ $.
مثال Example
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 System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date); } }
المخرجات
Due date: February 09, 2004
بدلاً من ذلك ، يمكنك استخدام العلامة <. يشير إلى أنه يجب استخدام الوسيطة نفسها كما في مواصفات التنسيق السابق مرة أخرى.
مثال Example
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 %, "Due date:", date); } }
المخرجات
Due date: February 09, 2004
أحرف تحويل التاريخ والوقت
الحرف | الوصف | مثال |
---|---|---|
c | التاريخ والوقت الكامل | Mon May 04 09:51:52 CDT 2009 |
F | تاريخ الايزو 8601 | 2004-02-09 |
D | الولايات المتحدة تاريخ التنسيق (شهر / يوم / سنة) | 02/09/2004 |
T | وقت 24 ساعة | 18:05:19 |
r | وقت 12 ساعة | 06:05:19 pm |
R | 24 ساعة الوقت ، لا ثواني | 18:05 |
Y | أربعة أرقام السنة (مع الأصفار الرائدة) | 2004 |
y | آخر رقمين من السنة (مع الأصفار البادئة) | 04 |
C | أول رقمين من السنة (مع الأصفار الرائدة) | 20 |
B | اسم الشهر الكامل | February |
b | اسم الشهر المختصر | Feb |
m | شهر من رقمين (مع الأصفار الرائدة) | 02 |
d | يوم من رقمين (مع الأصفار الرائدة) | 03 |
e | يوم مكون من رقمين (بدون الأصفار البادئة) | 9 |
A | اسم أيام الأسبوع الكامل | Monday |
a | اختصار اسم أيام الأسبوع | Mon |
j | يوم من ثلاثة أرقام من السنة (مع الأصفار الرائدة) | 069 |
H | ساعة من رقمين (مع الأصفار البادئة) ، بين 00 و 23 | 18 |
k | ساعة مكونة من رقمين (بدون الأصفار البادئة) ، بين 0 و 23 | 18 |
I | ساعة من رقمين (مع الأصفار البادئة) ، بين 01 و 12 | 06 |
l | ساعة مكونة من رقمين (بدون الأصفار البادئة) ، بين 1 و 12 | 6 |
M | دقائق من رقمين (مع الأصفار البادئة) | 05 |
S | ثواني من رقمين (مع الأصفار البادئة) | 19 |
L | مللي ثانية مكونة من ثلاثة أرقام (مع الأصفار البادئة) | 047 |
N | تسعة نانوثانية رقمية (مع الأصفار الرائدة) | 047000000 |
P | علامة الصباح أو الظهر الكبيرة | PM |
p | صغيرة الصباح أو بعد الظهر علامة | pm |
z | RFC 822 إزاحة رقمية من GMT | -0800 |
Z | Time zone | PST |
s | ثانية منذ 1970-01-01 00:00:00 GMT | 1078884319 |
Q | ميلي ثانية منذ 1970-01-01 00:00:00 GMT | 1078884319047 |
هناك فئات أخرى مفيدة تتعلق بالتاريخ والوقت. لمزيد من التفاصيل ، يمكنك الرجوع إلى وثائق Java Standard.
تحويل النصوص التاريخية إلى بيانات من نوع التواريخ Parsing Strings into Dates
لدى فئة SimpleDateFormat بعض الدوال الإضافية ، ولا سيما تحليل () الذي يحاول تحليل سلسلة وفقًا للتنسيق المخزن في كائن SimpleDateFormat المحدد.
مثال Example
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); } } }
يؤدي تشغيل عينة من البرنامج أعلاه إلى النتيجة التالية -
المخرجات
1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818
النوم لبرهة من الوقت Sleeping for a While
يمكنك النوم لأي فترة زمنية من مللي ثانية واحدة إلى عمر جهاز الكمبيوتر الخاص بك. على سبيل المثال ، ينام البرنامج التالي لمدة 3 ثوانٍ -
مثال Example
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
قياس الوقت المنقضي Measuring Elapsed Time
في بعض الأحيان ، قد تحتاج إلى قياس نقطة زمنية بالمللي ثانية. لذلك دعونا نعيد كتابة المثال أعلاه مرة أخرى -
مثال Example
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 Class
GregorianCalendar هو تطبيق ملموس لفئة التقويم التي تنفذ التقويم الغريغوري العادي الذي تعرفه. لم نناقش فئة التقويم في هذا البرنامج التعليمي ، يمكنك البحث عن وثائق Java القياسية لهذا الغرض.
إرجاع الأسلوب getInstance () التقويم GregorianCalendar تهيئة مع التاريخ والوقت الحالي في الإعدادات المحلية الافتراضية والمنطقة الزمنية. يحدد GregorianCalendar حقلين: AD و BC. يمثل هذان العهدين المحددان بواسطة التقويم الغريغوري.
هناك أيضًا العديد من مُنشئات كائنات GregorianCalendar -
الرقم. | المشيد والشرح |
---|---|
1 |
GregorianCalendar()
تكوين GregorianCalendar افتراضيًا باستخدام الوقت الحالي في المنطقة الزمنية الافتراضية باستخدام الإعدادات المحلية الافتراضية.
|
2 |
GregorianCalendar(int year, int month, int date)
ينشئ GregorianCalendar مع تحديد التاريخ المحدد في المنطقة الزمنية الافتراضية مع الإعدادات المحلية الافتراضية.
|
3 |
GregorianCalendar(int year, int month, int date, int hour, int minute)
ينشئ 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 -
الرقم | الدالة والوصف |
---|---|
1 |
void add(int field, int amount)
يضيف مقدار الوقت (الموقَّع) المحدد إلى حقل الوقت المحدد ، وفقًا لقواعد التقويم.
|
2 |
protected void computeFields()
.يحول UTC كمللي ثانية إلى قيم حقول الوقت
|
3 |
protected void computeTime()
Overrides Calendar يحول قيم حقل الوقت إلى 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)
يُرجع أعلى قيمة دنيا للحقل المحدد في حالة اختلافه.
|
9 |
Date getGregorianChange()
الحصول على تاريخ تغيير التقويم الغريغوري.
|
10 |
int getLeastMaximum(int field)
لإرجاع أقل قيمة قصوى للحقل المحدد في حالة اختلافه.
|
11 |
int getMaximum(int field)
إرجاع الحد الأقصى لقيمة الحقل المحدد.
|
12 |
Date getTime()
الحصول على الوقت الحالي لهذا التقويم.
|
13 |
long getTimeInMillis()
الحصول على الوقت الحالي لهذا التقويم كوقت طويل.
|
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)
يضبط قيم الحقول السنة والشهر والتاريخ.
|
21 |
void set(int year, int month, int date, int hour, int minute)
يضبط قيم الحقول السنة والشهر والتاريخ
والساعة والدقيقة.
|
22 |
void set(int year, int month, int date, int hour, int minute, int second)
يضبط قيم الحقول السنة والشهر والتاريخ والساعة والدقيقة والثانية.
|
23 |
void setGregorianChange(Date date)
يعين تاريخ التغيير GregorianCalendar.
|
24 |
void setTime(Date date)
يضبط الوقت الحالي لهذا التقويم مع التاريخ المحدد.
|
25 |
void setTimeInMillis(long millis)
يضبط الوقت الحالي للتقويم من القيمة الطويلة المحددة.
|
26 |
void setTimeZone(TimeZone value)
يضبط المنطقة الزمنية مع قيمة المنطقة الزمنية المحددة.
|
27 |
String toString()
إرجاع متغير نصي مماثل لهذا التقويم.
|
مثال Example
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 2009 Time: 11:25:27 The current year is not a leap year
للحصول على قائمة كاملة بالثابت المتوفرة في فئة التقويم ، يمكنك الرجوع إلى وثائق Java القياسية.
التسميات: Java جافا#
<< الصفحة الرئيسية