DateFormat
1. مقدمة إلى DateFormat
الغرض من DateFormat هو تنسيق "التاريخ/الوقت". في الواقع ، إنها أداة تنسيق للتاريخ. يمكن أن يساعدنا في تنسيق التاريخ ثم تحويل التاريخ إلى سلسلة السلسلة التي نريد أن نستخدمها. ومع ذلك ، فإن تاريخ تنسيق DateFormat له وظائف محدودة وليست قوية مثل التبسيط ؛ لكن DateFormat هي فئة الوالدين لـ SimpleDateFormat. لذلك ، لدينا أولاً فهم شامل لـ DateFormat ، ثم نتعلم SimpleDateFormat.
وظيفة DateFormat هي تنسيق التاريخ. وهو يدعم 4 أنماط تنسيق بما في ذلك الكاملة والطويلة والمتوسطة والقصيرة:
(01) DateFormat.Short
رقم تمامًا ، مثل 12.13.52 أو 3:30 مساءً
(02) DateFormat.Medium
أطول ، مثل 12 يناير 1952
(03) DateFormat.long
أطول ، مثل 12 يناير 1952 أو 3:30:32 مساءً
(04) DateFormat.full
تم تحديده بالكامل ، مثل الثلاثاء ، 12 أبريل 1952 م أو 3:30:42 مساءً بتوقيت المحيط الهادئ.
تعريف DateFormat كما يلي
يمتد رقم الفئة التجريدية العامة التنسيق {}
المُنشئ الافتراضي لواجهة دالة DateFormat:
DateFormat ()
غير البناء:
كائن استنساخ () منطقي يساوي (كائن كائن) مجردة تنسيق StringBuffer (تاريخ التاريخ ، StringBuffer العازلة ، حقل الميدان) تنسيق StringBuffer النهائي (كائن كائن ، مخزن مؤقت للسلسلة ، حقل الميدان) تنسيق السلسلة النهائية (تاريخ التاريخ) getDateInstance (int style) النهائي الثابت dateformat getDateInstance (int style ، locale locale) النهائي الثابت dateformat getDateTimeInstance (int style ، locale) getDateTimeInstance (int datestyle ، int timestyle ، موضعية موضعية) numberformat getNumberformat () timezone gettimezone () int hashcode () boolean isLenient () date parse (سلسلة). القيمة) void setNumberformat (NumberFormat)
ملاحظة: DateFormat هو فئة مجردة.
عندما نحصل على مثيل DateFormat من خلال getInstance () و getDateInstance () و getDateTimeInstance () من dateFormat ؛ إنه في الواقع كائن simpledateformat الذي تم إرجاعه.
الوظائف التالية هي في الواقع كائنات simpledateformat التي تم إرجاعها.
النهائي الثابت dateformat getInstance () نهائي ثابت الثابت getTimeInstance () النهائي الثابت dateformat getTimeInstance (int style) النهائي الثابت dateformat getTimeInstance (int style ، local getDateTimeInstance (int datestyle ، int timestyle) dateformath final static getDateTimeInstance (int datestyle ، int timestyle ، locale locale)
يتم تعريف هذه الوظائف في SimpledAteFormat.java على النحو التالي:
Final Static Final Final = 0 ؛ Final Final int int long = 1 ؛ المتوسط النهائي الثابت العام = 2 ؛ Final static Final int Short = 3 ؛ public static int default = mediure ؛ public static static dateformat dateInstance () {return getDateTimeInstance (قصيرة ، قصيرة) ؛} DateFormat النهائي getTimeInstance (int style) {return get (style ، 0 ، 1 ، locale.getDefault ()) ؛} dateformatformate getTimeinstance (int style ، alocale alocale) {return get (style ، 0 ، 1 ، alocale) ؛} locale.getDefault ()) ؛} dateformate getDateinstance (int style) {int style) {return get (0 ، style ، 2 ، locale.getDefault ()) ؛} احصل على (افتراضي ، افتراضي ، 3 ، locale.getDefault ()) ؛} النهائي العام الثابتة الثابتة getDateTimeInstance (int datestyle ، int timestyle) Datestyle ، 3 ، alocale) ؛}/*** احصل على مثيل DateFormat ، والذي يعيد فعليًا كائن SimpleDateFormat. * * TIMESTYLE - يمكن أن تكون القيمة "كاملة" أو "طويلة" أو "متوسطة" أو "مختصرة" * - يمكن أن تكون القيمة "كاملة" أو "طويلة" أو "متوسطة" أو "قصيرة" * - يمكن أن تكون القيمة "1" أو "2" أو "3". * 1 يعني الحصول على "نمط الوقت" * 2 يعني الحصول على "نمط التاريخ" * 3 يعني الحصول على "نمط الوقت والتاريخ" * loc - كائن محلي ، يمثل "المنطقة" */private static dateformat get (int timestyle ، int datestyle ، int flags ، locale local) {if (((flags & 1)! = 0) {if timestyle <0 + timestyle) ؛ }} آخر {timestyle = -1 ؛ } if ((flags & 2)! = 0) {if (datestyle <0 || datestyle> 3) {throw new alficalArgumentException ("نمط التاريخ غير القانوني" + datestyle) ؛ }} آخر {datestyle = -1 ؛ } حاول {// تحقق مما إذا كان يمكن للمزود توفير تطبيق أقرب // إلى اللغة المطلوبة مما يمكن أن يوفره وقت تشغيل Java نفسه. POTHERSERVICERPROVIDERPOOL POOW = scientserviceproviderpool.getPool (dateFormatProvider.class) ؛ if (pool.hasproviders ()) {dateFormat ProvidersInstance = pool.getlocalizedObject (dateFormatgetter.instance ، loc ، timestyle ، datestyle ، flags) ؛ if (ProvidersInstance! = null) {return ProvidersInstance ؛ }} إرجاع جديد simpledateformat (timestyle ، datestyle ، loc) ؛ } catch (missetResourceException e) {return new SimplEdateFormat ("m/d/yy h: mm a") ؛ }}من خلال الكود أعلاه ، يمكننا أيضًا أن ندرك أن وظيفة DateFormat هي تنسيق التاريخ ؛ ساعدنا في تحويل التاريخ إلى سلسلة السلسلة التي نحتاجها. يوفر DateFormat وظائف محدودة للغاية ، ويمكنه دعم أربعة تنسيقات فقط: كاملة وطويلة ومتوسطة وقصيرة. علاوة على ذلك ، عندما نحصل على مثيل DateFormat ، فهو في الواقع كائن SimpleDateFormat الذي تم إرجاعه.
2. مثيل DateFormat
أدناه ، نتعلم واجهات برمجة تطبيقات شائعة الاستخدام باستخدام DateFormat من خلال أمثلة.
رمز المصدر كما يلي (DateFormattest.java):
استيراد java.util.date ؛ استيراد java.util.locale ؛ استيراد java.text.dateformat ؛ استيراد java.text.fieldposition ؛/*** برنامج اختبار API لـ DateFormat*/public class dateformattest {public static void main (string) {// show ille "الوقت": // إظهار "Date" فقط: Call getDateInstance () Function testgetDateinStance () ؛ // إظهار "تاريخ" + "الوقت": استدعاء getDateTimeInstance () وظيفة testgetDateTimeInstance () ؛ // test format () function testformat () ؛ } / ** * اختبر وظيفة getTimeInstance () من DateFormat * لها 3 نماذج محملة: * (01) getTimeInstance () * (02) getTimeInstance (int style) * (03) getTimeInstance (date date ، locale locale) * * * author skywang * / private static void testgettance () // locale locale = new locale ("fr" ، "fr") ؛ locale locale = new locale ("ZH" ، "CN") ؛ // ما يعادل DateFormat.getTimeInstance (DateFormat.Medium) ؛ DateFormat Short0 = DateFormat.getTimeInstance () ؛ . DateFormat Medium1 = DateFormat.getTimeInstance (DateFormat.Medium) ؛ DateFormat Long1 = DateFormat.getTimeInstance (DateFormat.long) ؛ DateFormat full1 = dateFormat.getTimeInstance (dateFormat.full) ؛ . DateFormat Medium2 = DateFormat.getTimeInstance (DateFormat.Medium ، locale) ؛ DateFormat long2 = dateFormat.getTimeInstance (DateFormat.long ، locale) ؛ DateFormat full2 = dateFormat.getTimeInstance (dateFormat.full ، locale) ؛ system.out.println ("/n ---- getTimeInstance ---/n" + "(1.0) فارغة فارغة:" + Short0.format (date) + "/n" + "(2.1) param (s): long1.format (date) + "/n" + "(2.4) param (f): long2.format (date) + "/n" + "(3.4) param (f ، l):" + full2.format (date) + "/n") ؛ } / ** * اختبر وظيفة getDateTimeInstance () من DateFormat * لها 3 نماذج محملة: * (01) getDateInstance () * (02) getDateInstance (int style) * (03) getDateInstance (int style ، locale locale) * / public static void testgettance () locale locale = new locale ("ZH" ، "CN") ؛ // ما يعادل DateFormat.getDateTimeInstance (DateFormat.Medium) ؛ DateFormat Short0 = dateFormat.getDateTimeInstance () ؛ DateFormat Short1 = DateFormat.getDateTimeInstance (DateFormat.short ، DateFormat.Short) ؛ DateFormat Medium1 = DateFormat.getDateTimeInstance (DateFormat.Medium ، DateFormat.Medium) ؛ DateFormat Long1 = DateFormat.getDateTimeInstance (DateFormat.long ، dateFormat.long) ؛ DateFormat full1 = dateFormat.getDateTimeInstance (dateFormat.full ، dateFormat.full) ؛ DateFormat Short2 = DateFormat.getDateTimeInstance (DateFormat.short ، dateFormat.short ، accale) ؛ DateFormat Medium2 = dateFormat.getDateTimeInstance (DateFormat.medium ، dateFormat.medium ، accale) ؛ DateFormat Long2 = DateFormat.getDateTimeInstance (DateFormat.long ، dateFormat.long ، accale) ؛ DateFormat full2 = dateformat.getDateTimeInstance (dateFormat.full ، dateFormat.full ، accale) ؛ system.out.println ("/n ---- getDateTimeInstance ---/n" + "(1.0) param فارغة: " + long1.format (date) +"/n " +" (2.4) param (f): long2.format (date) + "/n" + "(3.4) param (f ، l):" + full2.format (date) + "/n") ؛ } / ** * اختبر وظيفة getDateInstance () من DateFormat * لها 3 نماذج محملة: * (01) getDateTimeInstance () * (02) getDateTimeInstance (Int Datestyle ، int timestyle) * (03) getDateTimeInstance (int timestyle ، locale) = تاريخ جديد () ؛ // locale locale = new locale ("en" ، "US") ؛ locale locale = new locale ("ZH" ، "CN") ؛ // ما يعادل DateFormat.getDateInstance (DateFormat.Medium) ؛ DateFormat Short0 = dateFormat.getDateInstance () ؛ DateFormat Short1 = DateFormat.getDateinStance (DateFormat.short) ؛ DateFormat Medium1 = DateFormat.getDateInstance (DateFormat.Medium) ؛ DateFormat Long1 = DateFormat.getDateInstance (DateFormat.long) ؛ DateFormat full1 = dateFormat.getDateInstance (dateFormat.full) ؛ DateFormat Short2 = DateFormat.getDateinStance (DateFormat.short ، locale) ؛ DateFormat Medium2 = DateFormat.getDateInstance (DateFormat.Medium ، locale) ؛ DateFormat long2 = dateFormat.getDateInstance (DateFormat.long ، locale) ؛ DateFormat full2 = dateFormat.getDateInstance (dateFormat.full ، locale) ؛ System.out.println ("/n ---- getDateinStance ---/n" + "(1.0) فارغة فارغة:" + Short0.format (date) + "/n" + "(2.1) param (s): long1.format (date) + "/n" + "(2.4) param (f): long2.format (date) + "/n" + "(3.4) param (f ، l):" + full2.format (date) + "/n") ؛ } / *** اختبار DateFormat Format () function* / public static void testformat () {date date = new date () ؛ StringBuffer SB = New StringBuffer () ؛ حقل المجال = مجال جديد (DateFormat.year_field) ؛ DateFormat Format = dateFormat.getDateTimeInstance () ؛ sb = format.format (التاريخ ، sb ، الحقل) ؛ System.out.println ("/ntestformat") ؛ system.out.printf ("sb = ٪ s/n" ، sb) ؛ }} نتائج التشغيل:
--- GetTimeInstance --- (1.0) فارغة فارم: 4:54:22 PM (2.1) واحد (S): 4:54 PM (2.2) واحد param (M): 4:54:22 PM (2.3) param (l): 4:54:22 PM CST (3.1) param واحد (S ، L): 4:54 (3.2) Param (M ، L): 16:54:22 (3.3) Param (L ، L): 4:54:22 PM (3.4) Param (F ، L): 4:54:22 PM CST --- GetDateinstance --- (1.0) 1/23/14 (2.2) واحد بارام (م): 23 يناير 2014 (2.3) واحد بارام (ل): 23 يناير 2014 (2.4) واحد بارام (و): الخميس ، 23 يناير 2014 (3.1) واحد بارام (S ، L): 14-1-23 (3.2) واحد بارام (M ، L): 2014-1-23 (3.3). 23 يناير 2014 --- getDateTimeInstance ---- (1.0) فارغة فارغة: 23 يناير 2014 4:54:23 PM (2.1) واحد (S): 1/23/14 4:54 PM (2.2) واحد بارام (M): 23 يناير 2014 4:54:23 مساءً (2.3). الخميس ، 23 يناير ، 2014 4:54:23 PM CST (3.1) Param (S ، L): الخميس ، 23 يناير 2014 04:54:23 PM CSTTESTFORMATSB = 23 يناير 2014 4:54:23 مساء
نعم. حتى الآن ، انتهى تعلم DateFormat. بعد ذلك ، نبدأ في تعلم SimpleDateFormat ، وهو ما تحتاج إلى فهمه عند تنسيق تاريخ.
SimpleDateFormat
1.
SimplEdateFormat هي أداة لتنسيق تاريخ التحليل. الأكثر استخدامًا هو تنسيق التاريخ بالتنسيق المحدد ، ثم نستخدم السلاسل التي يمكننا تنسيقها للتاريخ.
بشكل أكثر دقة ، يعد SimpleDateFormat فئة محددة تتنسيق وتواريخ تواريخها بطريقة متعلقة بالمواصلة. يسمح بالتنسيق (التاريخ-> النص) ، التحليل (النص-> التاريخ) ، والتطبيع.
مُنشئ SimpleDateFormat:
مُنشئ
SimpleDateFormat () SimpleDateFormat (نمط السلسلة) SimpleTofformat (قالب السلسلة ، قيمة DateFormatsyMbols) SimpleDateFormat (قالب السلسلة ، لغة المحطة)
غير البناء
void applicationlocalizedpattern (قالب السلسلة) void appludpattern (قالب السلسلة) كائن الكائن () منطقية متساوية (كائن كائن) تنسيق stringbuffer (تاريخ التاريخ ، المخزن المؤقت stringbuffer ، fieldposition fieldposition) datefortformateratoratoratoratoratoratoratoratoratoratorator (كائن كائن) get2digityearstart () hashcode () تاريخ تحليل (سلسلة السلسلة ، وضع parseposition) void set2DigityeArstart (تاريخ التاريخ) void setDateFormatsyMbols (dateFormatsymbols) سلسلة tolocalizedpattern () سلسلة topattern ()
SimpleDateFormat العرض التوضيحي البسيط:
// إنشاء كائن تاريخ جديد ، والوقت هو 2013-09-19DATE DATE = تاريخ جديد (113،8،19) ؛ // قم بإنشاء "كائن SimpleDateFormat" جديد ، وقم بتعيين "وضع التنسيق" لـ SDF SimpleDateFormat SDF = جديد SimplEdateFormat ("Yyyy-MM-DD") ؛ // تاريخ التنسيق مع SDF وإرجاع السلسلة. String str = sdf.format (date) ؛ 2. وصف التنسيق المتعلق بتبسيط
2.1 وضع التاريخ والوقت
يتم تحديد تنسيق التاريخ والوقت حسب سلسلة نمط التاريخ والوقت. في سلاسل أنماط التاريخ والوقت ، يتم تفسير الحروف غير المخصصة "إلى" Z "و" A "إلى" Z "كرسائل نمط لتمثيل عناصر سلسلة التاريخ أو الوقت. يمكن إرفاق النص في عروض أسعار واحدة (') لتجنب التفسير. "" "يعني اقتباسات واحدة. لا يتم تفسير جميع الشخصيات الأخرى ؛ يتم نسخها ببساطة إلى سلسلة الإخراج عند تنسيقها ، أو مطابقة لسلسلة الإدخال عند تحليلها.
يتم تعريف رسائل النمط التالية (يتم الحفاظ على جميع الأحرف الأخرى "إلى" Z "و" A "إلى" Z "):
| خطاب | عنصر التاريخ أو الوقت | يعبر | مثال |
| ز | شعار عصر | نص | إعلان |
| ذ | سنة | سنة | 1996 ؛ 96 |
| م | منتصف العام | شهر | يوليو؛ يوليو 07 |
| ث | أسابيع في العام | رقم | 27 |
| ث | أسابيع في الشهر | رقم | 2 |
| د | أيام في العام | رقم | 189 |
| د | أيام في الشهر | رقم | 10 |
| و | أسبوع الشهر | رقم | 2 |
| ه | أيام الأسبوع | نص | يوم الثلاثاء؛ الثلاثاء |
| أ | علامة AM/PM | نص | مساءً |
| ح | ساعات في اليوم (0-23) | رقم | 0 |
| ك | ساعات في اليوم (1-24) | رقم | أربعة وعشرون |
| ك | عدد الساعات في AM/PM (0-11) | رقم | 0 |
| ح | عدد الساعات في AM/PM (1-12) | رقم | 12 |
| م | دقائق في ساعات | رقم | 30 |
| ق | عدد الثواني في دقائق | رقم | 55 |
| ق | عدد ميلي ثانية | رقم | 978 |
| ض | المنطقة الزمنية | المنطقة الزمنية العامة | الوقت القياسي للمحيط الهادئ ؛ PST GMT-08: 00 |
| ض | المنطقة الزمنية | RFC 822 المنطقة الزمنية | -0800 |
| وضع التاريخ والوقت | نتيجة |
| "yyyy.mm.dd g 'في' hh: mm: ss z" | 2001.07.04 م في 12:08:56 PDT |
| "eee ، mmm d ، '' yy" | الأربعاء ، 4 يوليو ، '01 |
| "H: MM A" | 12:08 مساءً |
| "hh 'o''clock' a ، zzzz" | الساعة 12 مساءً ، وقت النهار في المحيط الهادئ |
| "K: MM A ، Z" | 0:08 مساءً ، PDT |
| "yyyyyy.mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm | 02001. جولي. |
| "Eee ، D MMM Yyyy HH: MM: SS Z" | الأربعاء ، 4 يوليو 2001 12:08:56 -0700 |
| "Yymmddhhmmssz" | 010704120856-0700 |
| "yyyy-mm-dd't'hh: mm: ss.sszz" | 2001-07-04T12: 08: 56.235-0700 |
استيراد java.util.date ؛ استيراد java.util.locale ؛ استيراد java.util.calendar ؛ استيراد java.text.dateformat static void main (string [] args) {// get date/time من خلال SimpleDateFormat: هناك تنسيقات متعددة للاختبار empledateFormats () ؛ // الحصول على التاريخ/الوقت مع DateFormat Supertest () ؛ } /*** احصل على تاريخ /وقت مع SimpleDateFormat. هناك العديد من التنسيقات لاختيار */ private static void testSimpledAteFormats () {String [] formats = new string [] {"hh: mm" ، // 14:22 "h: mm a" ، // 2:22 pm "hh: mm z" ، // 14:22 +0800 "hh: mm zzz" ، // // 14:22 "Yyyy-MM-DD" ، // 2013-09-19 "Yyyy-MM-DD HH: MM" ، // 2013-09-19 14:22 "Yyyy-MM-DD HH: MM: SS" ، // 2013-09-19 14:22 " 2013-09-19 14:22:33 2013-09-19T14: 22: 30.000+0800 "Yyyyy.Mm.dd G 'في" HH: MM: SS Z "، // 2013.09 ZZZZ "، // 02 O'Clock PM ، CST" Yyyyyy.mmmm.dd GGG HH: MM AAA "، // 02013. 130919142230+0800 "yyyy-mm-dd't'hh: mm: ss.sssz" ، // 2013-09-19t14: 22: 30.000+0800 "eeee 'date (' yyyy-mm-dd ')' time ('hh: mm: ss') ' CST} ؛ // تاريخ التاريخ = (تاريخ جديد (0)) ؛ // التاريخ هو 1970-01-01 07:00:00 // تاريخ التاريخ = calendar.getInstance (). getTime () ؛ // التاريخ هو تاريخ الوقت الحالي = تاريخ جديد (113 ، 8 ، 19 ، 14 ، 22 ، 30) ؛ // التاريخ هو 2013-09-19 14:22:30 لـ (تنسيق السلسلة: التنسيقات) {simpledateformat sdf = new SimpleDateFormat (format ، locale.simplified_chinese) ؛ // SimpleDateFormat SDF = New SimplEdateFormat (format) ؛ System.out.format ("٪ 30S ٪ S/N" ، التنسيق ، sdf.format (date)) ؛ }}/*** الحصول على تاريخ/الوقت من خلال DateFormat*/private static void supertest () {// إنشاء كائن تاريخ جديد ، يكون الوقت 2013-09-19 14:22:30 // (01) year = "'target year'-1900" ، // (02) month. 0 هو يناير ، 1 هو فبراير ، وهكذا. // (03) يوم. العدد بين 1-31 تاريخ mdate = تاريخ جديد (113 ، 8 ، 19 ، 14 ، 22 ، 30) ؛ locale locale = new locale ("ZH" ، "CN") ؛ // 14:22:30 وقت السلسلة = DateFormat.getTimeInstance (DateFormat.medium ، locale.simpliped_chinese) .Format (mdate) ؛ // 2013-09-19 تاريخ السلسلة = DateFormat.getDateInstance (DateFormat.medium ، locale.simpliped_chinese) .Format (mDate) ؛ // 2013-09-19 14:22:30 String dateTime = DateFormat.getDateTimeInstance (DateFormat.medium ، dateFormat.medium ، locale.simplified_chinese) .Format (mdate) ؛ system.out.printf ("/ntime = ٪ s/ndate = ٪ s/ndateTime = ٪ s/ndateTime = ٪ s/n" ، الوقت ، التاريخ ، dateTime) ؛ }} نتائج التشغيل:
HH: MM 14:22 H: MM A 2:22 PM Yyyy-MM-DD HH: MM: SS 2013-09-19 14:22:30 Yyyy-MM-DD HH: MM: SS ZZZZ 2013-09-19 14:22:30 YYYY-MM-DD HH: MM: SS ZZZZ 2013-09-19 14:22:30 YYYY-DD HH: MM 2013-09-19 14:22:30 YYYYY-MM-DD HH: MM: SS ZZZZ 2013-09-19 14:22:30 YEEEE YYYY-MM-DD HH: MM: SS ZZZZ الخميس 2013-09-19 yyyy-mm-dd't'hh: mm: Ss.sszz 2013-09-19t14: 22: 30.000+0800 Yyyyy.mm.dd g 'at' hh: mm: ss z 2013.09.19 ad at 14:22:30 cst k: mm a 2:22 pm eee ، mmm d ، ' A ، Zzzz 02 O'Clock PM ، Yyyyyy.mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm.dd Ggg Hh: Mm Aaa 02013. yyyy-mm-dd't'hh: mm: ss.sssz 2013-09-19t14: 22: 30.000+0800eeee 'Date (' yyyy-mm-dd ')' time ('hh: mm: ss') الوقت = 14: 22: 30date = 2013-9-19DateTime = 2013-9-19 14:22:30