أثناء تطوير جافا ، كنت متشابكًا حتماً مع نوع التاريخ. كنت سألخص العمليات المتعلقة بالتاريخ التي استخدمها المشروع غالبًا. الإصدار JDK 1.7. إذا كان يمكن أن يساعدك في توفير بضع دقائق للاستيقاظ والتحرك وصنع فنجان من القهوة ، فسيكون ذلك رائعًا. هيه. بالطبع ، أنا فقط أقدم حلولًا قابلة للحياة ولا تضمن أن تكون أفضل الممارسات ، والمناقشات مرحب بها.
1. قيمة التاريخ
في عصر JDK القديم ، كان هناك العديد من الرموز التي استخدمت فئة java.util.date من حيث قيم التاريخ. ومع ذلك ، نظرًا لأن فئة التاريخ غير مريحة لتحقيق التدويل ، يوصى باستخدام فئة java.util.calendar لمعالجة الوقت والتاريخ بدءًا من JDK1.1. لن أقدم عمليات فئة التاريخ هنا. دعنا نذهب مباشرة إلى الموضوع وكيفية استخدام فئة التقويم للحصول على التاريخ والوقت الحاليين.
نظرًا لأن طريقة مُنشئ التقويم يتم تعديلها بواسطة محمية ، سنقوم بإنشاء كائن تقويمي من خلال طريقة getInstance المتوفرة في API.
// هناك طرق متعددة محملة لإنشاء تقويم كائنات تقويمية الآن = calendar.getInstance () ؛ // الافتراضي // حدد المنطقة الزمنية والمنطقة ، أو يمكنك فقط إدخال أحد معلمات تقويم المعلمات الآن = calendar.getInstance (timezone ، locale) ؛
ثم يمكننا الحصول على المعلمات الزمنية المختلفة الحالية من خلال الكائن.
int year = now.get (calendar.year) ؛ // ، العام الحالي int month = now.get (calendar.month) + ؛ // ، الشهر الحالي ، يرجى إضافة int day = now.get (calendar.date) ؛ // ، تاريخ تاريخ اليوم الحالي = now.getTime () ؛ // احصل مباشرة على تاريخ النوع
للحصول على أنواع أخرى من بيانات الوقت ، تحتاج فقط إلى تعديل المعلمات في Now.get (). بالإضافة إلى المعلمات الثلاثة المذكورة أعلاه ، فإن المعلمات الأخرى الشائعة الاستخدام هي كما يلي:
• calendar.day_of_month: التاريخ ، مثل Calendar.date
• Calendar.hour: 12 ساعة
• calendar.hour_of_day: عدد الساعات في نظام 24 ساعة
• Calendar.minute: دقيقة
• Calendar.Second: ثواني
• Calendar.day_of_week: أسبوعيًا
بالإضافة إلى الحصول على بيانات الوقت ، يمكننا أيضًا تعيين معلمات زمنية مختلفة من خلال كائن التقويم.
// حدد فقط قيمة حقل معين // مجموعة الفراغ النهائية العامة (حقل int ، القيمة int) now.set (calendar.year ،) ؛ // المحدد العام ، الشهر ، اليوم ، الساعة ، الشهر ، اليوم ، ساعة ، دقيقة ، ثانية // مجموعة الفراغ النهائية العامة (int year ، int month ، int date [، int hourfday ، int int second]) now.set (، ، [، ، ، ،]) ؛ // قم بالتسجيل في تاريخ نوع النوع مباشرة // public void setTime (تاريخ التاريخ) الآن.
يلاحظ:
• عند تعيين المعلمة الزمنية ، سيتم إعادة حساب القيم الأخرى ذات الصلة. على سبيل المثال ، عند تعيين التاريخ على 11 ، سيتم إجراء التغييرات المقابلة في الأسبوع.
• الشهر الذي تحصل عليه هو زائد 1. الشهر الفعلي هو الذي هو أول.
• في فئة التقويم ، الأحد هو 1 ، الاثنين هو 2 ، وهلم جرا.
2. تحويل التاريخ
بعد الدردشة حول التاريخ ، دعنا نتحدث عن تحويل التاريخ. يكون التحويل عمومًا هو التحويل المتبادل بين تاريخ نوع التاريخ وسلسلة نوع السلسلة. أنا أستخدم بشكل أساسي java.text.simpleDateFormat لتشغيل التحويل.
SimpleDateFormat sdf = جديد simpledateFormat ("Yyyy-MM-DD HH: MM: SS") ؛ حاول {// تاريخ التقويم سلسلة = calendar.getInstance () ؛ تاريخ التاريخ = calendar.getTime () ؛ String dateStringParse = sdf.format (date) ؛ // string to date string datestring = "- ::" ؛ DateParse = sdf.parse (dateString) ؛ } catch (parseException e) {E.PrintStackTrace () ؛ }يلاحظ:
• يجب تحديد تنسيق التحويل عند إنشاء كائن SimpledAteFormat.
• تنسيق التحويل حساس للحالة ، ويمثل Yyyy السنة ، ويمثل MM الشهر ، ويمثل DD التاريخ ، ويمثل HH ساعة في عام 2011 ، ويمثل HH ساعة في 1011 ، وتمثل MM دقيقة ، وتمثل SS ثانية.
3. إضافة التاريخ والطرح
بشكل عام ، سنقوم بإضافتي وعمليتين للطرح في التواريخ:
• بناءً على تاريخ ، احسب التواريخ قبل/بعد ، قبل/بعد ، أو قبل/بعد ، أو قبل وبعد وحدات زمنية أخرى.
// حساب التقويم الآن = calendar.getInstance () ؛ now.add (Calendar.year ،) ؛ // بعد عام الوقت الحالي الآن. Add (Calendar.year ، -) ؛ // قبل عام الوقت الحالي // حساب التقويم الخاص = calendar.getInstance () ؛ SpecialDate.Settime (Date) ؛ // لاحظ أن قيمة specialDate تم تغييرها إلى تاريخ محدد خاص .Add (calendar.year ،) ؛ // بعد عام Time time specialDate.add (Calendar.year ، -) ؛ // قبل عام الوقت المحدد
لاحظ أنه يتم استخدام طريقة إضافة الكائن التقويم. يمكنك تغيير التقويم.
• احسب الفاصل الزمني بين مرتين ، على سبيل المثال ، كم عدد الأيام الموجودة الآن في 1 يناير 2016.
SimpleDateFormat sdf = جديد simpledateFormat ("Yyyy-MM-DD HH: MM: SS") ؛ String dateString = "- ::" ؛ التقويم التقويم = calendar.getInstance () ؛ long nowdate = calendar.getTime (). getTime () ؛ //date.getTime () الحصول على تاريخ millisecond حاول {long specialDate = sdf.parse (dateString) .getTime () ؛ betweendate long = (SpecialDate - nowdate) / ( * * *) ؛ // احسب عدد الأيام التي يتم فيها جانبها ، وقم بتقسيمها على صيغة تحويل milliseconds إلى System.out.out.print (Betweendate) ؛ } catch (parseException e) {E.PrintStackTrace () ؛ } 4. مقارنة التاريخ
عند النظر إلى الكود السابق ، وجدت أنه كلما قمت بعملية مقارنة بين التاريخ ، سأقوم أولاً بتحويل التاريخ إلى سلسلة بتنسيق "Yyyymmdd" ، ثم قم بتحويل السلسلة إلى قيمة ، ثم مقارنة حجم القيمة. هاها ، إنها عملية مقارنة بسيطة ، لكنها تستغرق أكثر من عشرة خطوط رمز للكتابة ، والتي لا تطاق إلى حد ما. الآن علينا أن نتحدث عن موقف مقارنة التاريخ الصحيح.
هناك عمومًا طريقتان لمقارنة التاريخ ، والتي تعتبر شائعة لـ java.util.date أو java.util.calendar. أحدهما هو المقارنة مع طريقة ما قبل () من خلال بعد () ، والآخر هو طريقة المقارنة () من خلال طريقة المقارنات ().
SimplEdateFormat SDF = جديد simpledateFormat ("YyyyM-MM-DD HH: MM: SS") ؛ String dateString_01 = "2016-01-01 11:11:11" ؛ String datestring_02 = "2016-01-02 11:11:11 Date_02 = sdf.parse (dateString_02) ؛ system.out.println (date_01.before (date_02)) ؛ // صحيح ، عندما يكون Date_01 أقل من Date_02 عندما يكون هذا صحيحًا ، وإلا فإنه هو system.out.println (date_02.after (date_01)) ؛ // صحيح ، عندما يكون Date_02 أكبر من Date_01 ، يكون هذا صحيحًا ، وإلا فهو System.out.println (Date_01.compareto (Date_02)) ؛ // -1 ، عندما يكون Date_01 أقل من Date_02 ، يكون -1 System.out.println (Date_02.compareto (Date_01)) ؛ // 1 ، عندما يكون Date_02 أكبر من Date_01 ، يكون 1 system.out.println (date_02.compareto (date_02)) ؛ // 0 ، عندما يكون تاريخان متساويان ، يكون 0} catch (parseException e) {E.PrintStackTrace () ؛}ما سبق هو الوصف الكامل لعمليات التاريخ المشترك (القيمة ، التحويل ، الإضافة والطرح ، المقارنة) في Java المقدمة لك في هذه المقالة. أتمنى أن تعجبك.