1. نظرة عامة على التواريخ في Java <Br /> تاريخ محتوى معقد للغاية في Java. للحصول على تاريخ في بيئات اللغة والبلد المختلفة ، تدويل التواريخ ، والتحويل بين التواريخ والوقت ، وإضافة وطرح التواريخ ، وتنسيق العرض من التواريخ كلها قضايا معقدة للغاية.
في جافا ، يتضمن تاريخ التشغيل بشكل أساسي الفصول التالية:
1. Java.Util.Date
يمثل تاريخ الفصل لحظة محددة ، دقيقة للمللي ثانية. بدءًا من JDK 1.1 ، يجب استخدام فئة التقويم لتنفيذ التحويل بين حقول التاريخ والوقت ، ويجب استخدام فئة DateFormat لتنسيق سلاسل التاريخ وتحليله. يتم التخلي عن الطريقة في تاريخ تفسير التواريخ على أنها السنة والشهر واليوم والساعة والدقيقة والثانية.
2. java.text.dateformat (فئة تجريدية)
DateFormat هي فئة مجردة من الفئات الفرعية للتاريخ/الوقت تنسيق وتحليل التواريخ أو الأوقات بطريقة مستقلة عن اللغة. تسمح الفئات الفرعية بتنسيق التاريخ/الوقت (مثل SimpleDateFormat) التنسيق (أي التاريخ-> النص) ، والتحليل (النص> التاريخ) ، والتوحيد. تشير إلى التاريخ ككائن للتاريخ ، أو بعد عدد المللي ثانية التي تبدأ من اللحظة GMT (GMT) 1970 ، 1 يناير ، 00:00:00.
3. java.text.simpleDateFormat (DateFormat المباشر الفئة الفرعية)
SimplEdateFormat هي فئة محددة تتنسيق وتحليل التواريخ بطريقة متعلقة بالمواصلة. يسمح بالتنسيق (التاريخ-> النص) ، والتحليل (النص-> التاريخ) ، والتطبيع.
يمكّنك SimpleDateFormat من تحديد أي وضع تنسيق وقت محدد من قبل المستخدم. ومع ذلك ، لا يزال من المستحسن استخدام GetTimeInstance أو getDateInstance أو getDateTimeInstance في DateFormat لإنشاء تنسيق وقت جديد.
4. java.util.calendar (فئة مجردة)
فئة التقويم هي فئة مجردة توفر بعض الطرق لتحويل لحظة محددة إلى مجموعة من حقول التقويم مثل السنة والشهر و day_of_month والساعة وما إلى ذلك ، وتوفر بعض الطرق لمعالجة حقول التقويم مثل الحصول على تاريخ الأسبوع المقبل. يمكن التعبير عن اللحظة كقيمة مللي ثانية ، وهي الإزاحة من الحقبة (أي ، 00: 00: 00.000 ، GMT ، 1 يناير 1970 ، GMT).
مثل الفئات الأخرى الحساسة للمواقع ، يوفر التقويم طريقة فئة getInstance للحصول على كائن مشترك من هذا النوع. تقوم طريقة GetInstance الخاصة بـ Calendar بإرجاع كائن تقويم تمت تهيئة حقول التقويم الخاصة به بحلول التاريخ والوقت الحاليين.
5. java.util.gregoriancalendar (الفئة الفرعية المباشرة للتقويم)
Gregoriancalendar هي فئة فرعية ملموسة من التقويم توفر نظامًا تقويميًا قياسيًا يستخدمه معظم البلدان في العالم.
Gregoriancalendar هو تقويم مختلط يدعم كل من أنظمة التقويم الجوليان وجريجوريان بدعم من انقطاع واحد ، والذي يتوافق بشكل افتراضي مع تاريخ غريغوريان عندما تم تأسيس التقويم الغريغوري (تم تأسيس بعض الدول في 15 أكتوبر 1582 ، وفي وقت لاحق في الآخرين). يمكن تغيير تاريخ البدء بواسطة المتصل عن طريق استدعاء SetGregorianChange ().
2. استخدام java.util.date
1. مقدمة إلى API من java.util.date
يمثل class java.util.date لحظة محددة ، دقيقة للمللي ثانية. هناك العديد من الطرق المقدمة ، ولكن العديد منها عفا عليها الزمن ولا ينصح بها. القوائم التالية فقط الأساليب التي لا عفا عليها الزمن:
ملخص أساليب البناء
-------------------------
تاريخ()
تعيين كائن تاريخ وتهيئة هذا الكائن مع الوقت الحالي للإشارة إلى الوقت الذي تم تخصيصه (دقيق للمللي ثانية).
التاريخ (تاريخ طويل)
قم بتعيين كائن تاريخ وتهيئة هذا الكائن لتمثيل العدد المحدد للمللي ثانية منذ الوقت القياسي القياسي (يسمى "Epoch" ، أي ، 00:00:00 بتوقيت جرينتش في 1 يناير 1970).
ملخص الطريقة
-------------------------
منطقية بعد (تاريخ متى)
اختبارات ما إذا كان هذا التاريخ هو بعد التاريخ المحدد.
منطقية من قبل (تاريخ متى)
اختبارات ما إذا كان هذا التاريخ هو قبل التاريخ المحدد.
كائن استنساخ ()
إرجاع نسخة من هذا الكائن.
int compareto (تاريخ آخر)
قارن ترتيب تواريخين.
منطقية متساوية (كائن OBJ)
قارن مساواة اثنين من التواريخ.
طويل getTime ()
إرجاع عدد المللي ثانية الممثلة في كائن التاريخ هذا منذ 1 يناير 1970 00:00:00 بتوقيت جرينتش.
int hashcode ()
إرجاع قيمة رمز التجزئة لهذا الكائن.
باطلة settime (وقت طويل)
قم بتعيين كائن التاريخ هذا لتمثيل النقطة الزمنية في الوقت المناسب بعد 00:00:00 بتوقيت جرينتش في 1 يناير 1970.
سلسلة tostring ()
قم بتحويل كائن التاريخ هذا إلى سلسلة النموذج التالي: dow mon dd hh: mm: ss zzz yyyy حيث:
داو هو يوم واحد من الأسبوع (الشمس ، الاثنين ، الثلاثاء ، الأربعاء ، الخميس ، الجمعة ، السبت).
Mon هو الشهر (يناير ، فبراير ، مارس ، أبريل ، مايو ، يونيو ، يوليو ، أغسطس ، سبتمبر ، أكتوبر ، نوفمبر ، ديسمبر).
DD هو يوم في يناير (01 إلى 31) يتم عرضه كرقم عشري من رقمين.
HH هي ساعة اليوم (00 إلى 23) ، معروضة كرقم عشري من رقمين.
MM هي الدقائق (00 إلى 59) في الساعة ويتم عرضها كرقم عشري من رقمين.
SS هو عدد الثواني (00 إلى 61) في دقيقة واحدة ، يتم عرضها كرقم عشري من رقمين.
ZZZ هي المنطقة الزمنية (وتعكس وقت توفير النهار). يتضمن اختصار المنطقة الزمنية القياسية اختصار المنطقة الزمنية المعترف بها بواسطة Method Parse. إذا لم يتم توفير معلومات المنطقة الزمنية ، فإن ZZZ فارغ ، أي أنه لا توجد أحرف على الإطلاق.
Yyyy هو عام ، يتم عرضه كرقم عشري من 4 أرقام.
فيما يلي مثال شامل لفئة التاريخ:
الفئة العامة testDate {public static void main (string [] args) {testDate testDate = new testDate () ؛ testDate.getSystemCurrentTime () ؛ testDate.getCurrentDate () ؛ } / *** احصل على وقت النظام الحالي* System.CurrentTimeMillis () لإرجاع وقت النظام الحالي ، وتبدأ النتيجة في الساعة 0:00:00 في 1 يناير 1970. عدد المللي ثانية قد انقضى حتى تنفيذ البرنامج والحصول على وقت النظام* 1 second = 1000 milliseconds* / getsystemcstemcurtime () {) System.out.println (System.CurrentTimeMillis ()) ؛ } public void getCurrentDate () {system.out.println ("--- احصل على الوقت الحالي للنظام ---") ؛ // إنشاء وتهيئة تاريخ (القيمة الأولية هي تاريخ التاريخ الحالي) تاريخ تاريخ جديد () ؛ system.out.println ("التاريخ الحالي هو =" + date.toString ()) ؛ System.out.println ("عدد المللي ثانية من ذوي الخبرة منذ 1 يناير 1970 =" + Date.getTime ()) ؛ }} 2. استخدام java.text.dateformat فئة الملخص
DateFormat هي فئة مجردة من الفئات الفرعية للتاريخ/الوقت تنسيق وتحليل التواريخ أو الأوقات بطريقة مستقلة عن اللغة. تسمح الفئات الفرعية بتنسيق التاريخ/الوقت (مثل SimpleDateFormat) التنسيق (أي التاريخ-> النص) ، والتحليل (النص> التاريخ) ، والتوحيد. تشير إلى التاريخ ككائن للتاريخ ، أو بعد عدد المللي ثانية التي تبدأ من اللحظة GMT (GMT) 1970 ، 1 يناير ، 00:00:00.
يوفر DateFormat عددًا من أساليب الفصل للحصول على تنسيق تاريخ/الوقت الافتراضي على أساس الافتراضي أو المقلي وأنماط التنسيق المتعددة. تشمل أنماط التنسيق الكاملة والطويلة والمتوسطة والقصيرة. يتم توفير مزيد من التفاصيل وأمثلة استخدام هذه الأنماط في وصف الطريقة.
DateFormat يساعد في تنسيق وتحليل التواريخ لأي لغة. لعدة أشهر ، أسابيع ، وحتى تنسيقات التقويم (تقويم القمر والطاقة الشمسية) ، يمكن أن يكون الكود غير ذي صلة تمامًا بالاتفاقيات المحلية.
لتنسيق تاريخ في اللغة الحالية ، استخدم طريقة مصنع ثابت:
myString = dateFormat.getDateinStance (). format (myDate) ؛
إذا قمت بتنسيق تواريخ متعددة ، فمن المفيد الحصول على التنسيق واستخدامه عدة مرات ، بحيث لا يتعين على النظام الحصول على معلومات حول لغة البيئة والاتفاقيات الوطنية عدة مرات.
DateFormat df = dateFormat.getDateinStance () ؛ لـ (int i = 0 ؛ i <mydate.length ؛ ++ i) {output.println (df.format (myDate [i]) +"؛") ؛ }
لتنسيق تواريخ مختلف الأماكن ، حددها في المكالمة إلى getDateInstance ().
DateFormat df = dateFormat.getDateInstance (DateFormat.long ، locale.france) ؛
يمكن أيضًا استخدام DateFormat للتحليل.
myDate = df.parse (mystring) ؛
استخدم getDateInstance للحصول على تنسيق التاريخ القياسي لهذا البلد. يتم توفير بعض أساليب المصنع الثابتة الأخرى أيضًا. استخدم GetTimeInstance للحصول على تنسيق الوقت لهذا البلد. استخدم getDateTimeInstance للحصول على تنسيقات التاريخ والوقت. يمكن تمرير خيارات مختلفة إلى طرق المصنع هذه للتحكم في طول النتيجة (من قصيرة إلى متوسطة إلى طويلة إلى كاملة). تعتمد النتيجة الدقيقة على اللغة ، ولكن عادة:
القصير هو رقم تمامًا ، مثل 12.13.52 أو 3:30 مساءً
الوسط أطول ، مثل 12 يناير 1952
طويل أطول ، مثل 12 يناير 1952 أو 3:30:32 مساءً
تم تحديد كامل بالكامل ، مثل الثلاثاء 12 أبريل 1952 م أو 3:30:42 مساءً بتوقيت المحيط الهادئ.
إذا أردت ، يمكنك أيضًا تعيين المنطقة الزمنية بالتنسيق. إذا كنت ترغب في فرض المزيد من التحكم في التنسيق أو التحليل (أو إعطاء المستخدم مزيدًا من التحكم) ، فيمكنك محاولة إلقاء DateFormat التي تم الحصول عليها من طريقة المصنع إلى SimpleDateFormat. هذا يعمل لمعظم البلدان ؛ فقط تذكر وضعه في كتلة المحاولة في حالة تنسيقات خاصة.
يمكنك أيضًا استخدام طريقة التحليل والتنسيق مع التحميل والموضوع لتحليل أجزاء من السلسلة خطوة بخطوة. قم بمحاذاة أي حقل محدد ، أو اكتشف مكان تحديد السلسلة على الشاشة.
DateFormat غير متزامن. يوصى بإنشاء مثيلات تنسيق مستقلة لكل موضوع. إذا وصلت مؤشرات الترابط المتعددة إلى تنسيق في نفس الوقت ، فيجب أن تظل متزامنة خارجيًا.
3. استخدام java.text.simpleDateFormat (DateFormat الفئة الفرعية المباشرة)
SimplEdateFormat هي فئة محددة تتنسيق وتحليل التواريخ بطريقة متعلقة بالمواصلة. يسمح بالتنسيق (التاريخ-> النص) ، والتحليل (النص-> التاريخ) ، والتطبيع.
يمكّنك SimpleDateFormat من تحديد أي وضع تنسيق وقت محدد من قبل المستخدم. ومع ذلك ، لا يزال من المستحسن استخدام GetTimeInstance أو getDateInstance أو getDateTimeInstance في DateFormat لإنشاء تنسيق وقت جديد. يمكن لكل طريقة فئة من هذا القبيل إرجاع تنسيق التاريخ/الوقت تهيئة في وضع التنسيق الافتراضي. يمكن تعديل نمط التنسيق باستخدام طريقة ApplyPattern حسب الحاجة. لمزيد من المعلومات حول استخدام هذه الأساليب ، راجع DateFormat.
وضع التاريخ والوقت
يتم تحديد تنسيق التاريخ والوقت حسب سلسلة نمط التاريخ والوقت. في سلاسل أنماط التاريخ والوقت ، يتم تفسير الحروف غير المخصصة "إلى" Z "و" A "إلى" Z "كرسائل نمط لتمثيل عناصر سلسلة التاريخ أو الوقت. يمكن إرفاق النص في عروض أسعار واحدة (') لتجنب التفسير. "" "يعني اقتباسات واحدة. لا يتم تفسير جميع الشخصيات الأخرى ؛ يتم نسخها ببساطة إلى سلسلة الإخراج عند تنسيقها ، أو مطابقة لسلسلة الإدخال عند تحليلها.
لمزيد من المعلومات المرجعية ، يمكنك عرض وثائق JDK API. هنا مثال شامل:
الفئة العامة testDateFormat {public static void main (string [] args) يلقي parseException {testDateFormat tdf = new testDateFormat () ؛ tdf.dateformat () ؛ } /*** اختبر فئة SimplEdateFormat* throws parseException* /public void dateFormat () يلقي ParseException {// إنشاء تاريخ التاريخ = تاريخ جديد () ؛ // إنشاء تنسيقات تاريخ مختلفة dateformat df1 = dateFormat.getInstance () ؛ DateFormat df2 = جديد SimplEdateFormat ("Yyyy-MM-01 HH: MM: SS EE") ؛ DateFormat df3 = dateformat.getDateInstance (dateFormat.full ، locale.china) ؛ // إنشاء تنسيق تاريخ بطول محدد للبلد المحدد. الطول مختلف ، وسلامة التاريخ المعروضة تختلف أيضا. DateFormat df4 = جديد simpledateFormat ("Yyyyy Year Mm Month DD Day HH HAR MINT SS SESHENTES EE" ، locale.china) ؛ DateFormat df5 = new SimpleDateFormat ("Yyyy-MM-DD HH: MM: SS EEEEEE" ، locale.us) ؛ DateFormat df6 = جديد SimplEdateFormat ("Yyyy-MM-DD") ؛ // تواريخ الإخراج في تنسيقات مختلفة System.out.println ("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- DF3.Format (DATE)) ؛ DF5.Format (DATE) ؛ Date Date2 = df2.parse ("2016-01-24 02:51:07 Sunday") ؛ Date Date3 = df3.parse ("2016-01-24") ؛ Date Date 4 = df4.parse ("2016-01-24 02:51:18 Sunday") ؛ تاريخ التاريخ 6 = df6.parse ("2016-01-24") ؛ System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println (Date2) ؛ 4. java.util.calendar (فئة مجردة)
java.util.calendar هو فئة مجردة ، تمثيل مجردة لوقت النظام. يوفر بعض الطرق لتحويل لحظة محددة إلى مجموعة من حقول التقويم مثل السنة والشهر و day_of_month أو الساعة وما إلى ذلك ، ويوفر بعض الطرق لمعالجة حقول التقويم (مثل الحصول على تاريخ الأسبوع المقبل). يمكن التعبير عن اللحظة كقيمة مللي ثانية ، وهي الإزاحة من الحقبة (أي ، 00: 00: 00.000 ، GMT ، 1 يناير 1970 ، GMT).
مثل الفئات الأخرى الحساسة للمواقع ، يوفر التقويم طريقة فئة getInstance للحصول على كائن مشترك من هذا النوع. تقوم طريقة GetInstance الخاصة بـ Calendar بإرجاع كائن تقويم تمت تهيئة حقول التقويم الخاصة به بحلول التاريخ والوقت الحاليين.
مثيل التقويم هو تمثيل مجردة لوقت النظام. من مثيل التقويم ، يمكنك معرفة معلومات مثل السنة والشهر واليوم والأسبوع والشهر والشهر. هناك طريقة ثابتة الحصول على (int x) في فئة التقويم. من خلال هذه الطريقة ، يمكنك الحصول على بعض القيم (السنة ، الشهر ، اليوم ، الأسبوع ، الشهر ، وما إلى ذلك) معلومات عن المثيل ذي الصلة. المعلمة X هي قيمة العائد ، محددة في التقويم.
يمكن أن تسقط بعض المصائد في التقويم بسهولة:
1. يبدأ أسبوع التقويم يوم الأحد ، بقيمة ثابتة 0.
2. يبدأ شهر التقويم من يناير ، بقيمة ثابتة 0.
3. اليوم الأول للتقويم من كل شهر هو 1.
5. java.util.gregoriancalendar (الفئة الفرعية المباشرة للتقويم)
Gregoriancalendar هي فئة فرعية ملموسة من التقويم توفر نظامًا تقويميًا قياسيًا يستخدمه معظم البلدان في العالم. تستخدم بالاقتران مع فئة التقويم التجريدي.
فيما يلي مثال شامل لرؤية استخدام فئة التقويم:
الطبقة العامة testcalendar {public static void main (string [] args) يلقي ParseException {testCalendar testCalendar = new testcalendar () ؛ testcalendar.testcalendar () ؛ testcalendar.testcalendar2 () ؛ } public void testcalendar () {// كيفية إنشاء تقويم تقويمي now1 = calendar.getInstance () ؛ Calendar now2 = new gregoriancalendar () ؛ Calendar Now3 = New GregorianCalendar (2016 ، 01 ، 24) ؛ Calendar now4 = new Gregoriancalendar (2016 ، 01 ، 24 ، 15 ، 55) ؛ // trail: شهر التقويم هو 0 ~ 11 Calendar Now5 = New GregorianCalendar (2016 ، 01 ، 24 ، 15 ، 55 ، 44) ؛ التقويم now6 = new gregoriancalendar (locale.us) ؛ Calendar Now7 = GregorianCalendar الجديد (timezone.gettimezone ("GMT-8: 00")) ؛ // SET CALENDAR NOW2.SETTEMER (DATE ()) ؛ System.out.println (now2) ؛ now2.SetTimeInmillis (تاريخ جديد (). getTime ()) ؛ System.out.println (now2) ؛ // تحديد تنسيق الإخراج الصيني للتاريخ والإخراج ، تاريخ SimpledAteFormat df = جديد SimplEdateFormat ("Yyyyy Year Mm Month Dd Hh Hh Hour Minute Ss Seconds E" ، locale.china) ؛ System.out.println ("احصل على الإخراج الصيني المنسق للتاريخ:" + df.format (now5.getTime ())) ؛ system.out.println () ؛ System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ now5.get (Calendar.month) ؛ now5.get (Calendar.Second) ؛ System.out.println ("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- "مارس" ، "أبريل" ، "مايو" ، "يونيو" ، "يوليو" ، "أغسطس" ، "سبتمبر" ، "أكتوبر" ، "نوفمبر" ، "ديسمبر"} ؛ System.out.println ("شهر الكائن Now5 هو:" + شهور [now5.get (Calendar.month)]) ؛ } public void testcalendar2 () يلقي ParseException {// الحصول على الحد الأقصى لعدد الأيام في التقويم الشهر الحالي Cal = Calendar.getInstance () ؛ int maxday = cal.getActualMaximum (calendar.day_of_month) ؛ int mindday = cal.getActualMinimum (calendar.day_of_month) ؛ system.out.println (maxday) ؛ // خذ اليوم الأخير من الشهر DateFormat Formatter3 = جديد SimplEdateFormat ("Yyyy-MM-"+maxday) ؛ system.out.println (format3.format (cal.getTime ())) ؛ . system.out.println (formatter4.format (cal.getTime ())) ؛ // ابحث عن عدد الأيام بين تواريخين java.text.simpledateformat format = new java.text.simpledateformat ("yyyy-mm-dd") ؛ java.util.date begindate = format.parse ("2007-12-24") ؛ java.util.date enddate = format.parse ("2007-12-25") ؛ يوم طويل = (enddate.getTime ()-begindate.getTime ())/(24*60*60*1000) ؛ System.out.println ("عدد الأيام بعيدة ="+اليوم) ؛ // التاريخ قبل عام واحد java.text.format formatter5 = new java.text.simpledateFormat ("Yyyy-MM-DD") ؛ java.Util.date TodayDate = new java.util.date () ؛ long beorforeTime = (TodayDate.getTime ()/1000) -60*60*24*365 ؛ اليوم. سلسلة beforedate = formatter5.format (اليوم) ؛ system.out.println (beforedate) ؛ التقويم التقويم = calendar.getInstance () ؛ Calendar.add (Calendar.year ، -1) ؛ system.out.println (formatter5.format (calendar.getTime ())) ؛ . gregoriancalendar gregoriancalendar = gregoriancalendar () ؛ int dayinweek = gregoriancalendar.get (calendar.day_of_week) ؛ int الإزاحة = 0 ؛ if (dayInweek == 1) {// Sunday Offset = 6 ؛ } آخر {// الاثنين إلى السبت الإزاحة = dayinweek - 2 ؛ } gregoriancalendar.add (gregoriancalendar.day_of_month ، -offset) ؛ String sday = dateformat.format (gregoriancalendar.getTime ()) ؛ gregoriancalendar.add (gregoriancalendar.day_of_month ، 6) ؛ String eday = dateformat.format (gregoriancalendar.getTime ()) ؛ System.out.println ("الاثنين من هذا الأسبوع:" + sday) ؛ System.out.println ("Sunday of This Week:" + Eday) ؛ }}3. ملخص
غالبًا ما يكون هناك خمسة جوانب من التواريخ في جافا:
1. تاريخ الخلق
2. عرض تنسيق التاريخ
3. تحويل التاريخ (التحويل المتبادل بشكل أساسي مع السلاسل)
4. الحصول على تواريخ منتصف العمر ، الشهر ، اليوم ، ساعة ، دقيقة ، ثانية ، الأسبوع ، الشهر ، إلخ.
5. مقارنة حجم التاريخ وإضافة وطرح التواريخ.
ما سبق هو طريقة استخدام تاريخ جافا والوقت الملخص لك. آمل أن يكون مفيدًا لتعلمك.