كيفية تحويل سلسلة تاريخ إلى كائن تاريخ أو تقويم؟

StackOverflow https://stackoverflow.com/questions/43802

  •  09-06-2019
  •  | 
  •  

سؤال

انا املك String تمثيل التاريخ الذي أحتاجه لإنشاء ملف Date أو Calendar كائن من.لقد نظرت من خلال Date و Calendar واجهات برمجة التطبيقات ولكن لم يتم العثور على أي شيء يمكنه القيام بذلك بخلاف إنشاء طريقة التحليل القبيحة الخاصة بي.أعلم أنه لا بد من وجود طريقة، هل يعرف أحد حلاً؟

هل كانت مفيدة؟

المحلول

باختصار:

DateFormat formatter = new SimpleDateFormat("MM/dd/yy");
try {
  Date date = formatter.parse("01/29/02");
} catch (ParseException e) {
  e.printStackTrace();
}

يرى SimpleDateFormat javadoc للمزيد من.

ولتحويله إلى Calendar, ، يفعل:

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

نصائح أخرى

ليرة تركية ؛ د

LocalDate.parse( "2015-01-02" )

java.time

يحتوي Java 8 والإصدارات الأحدث على إصدار جديد java.time الإطار الذي يجعل هذه الإجابات الأخرى عفا عليها الزمن.هذا الإطار مستوحى من جودا تايم, ، محدد بواسطة جي إس آر 310, ، والممتدة من قبل ثلاثة عشرة اضافية مشروع.انظر درس تعليمي.

الفئات المجمعة القديمة، java.util.Date/.Calendar، مزعجة ومربكة بشكل ملحوظ.تجنبهم.

LocalDate

مثل Joda-Time، يحتوي java.time على فصل دراسي LocalDate لتمثيل قيمة التاريخ فقط بدون الوقت من اليوم وبدون المنطقة الزمنية.

ايزو 8601

إذا كانت سلسلة الإدخال الخاصة بك في المعيار ايزو 8601 تنسيق yyyy-MM-dd, ، يمكنك أن تطلب من هذا الفصل تحليل السلسلة مباشرة دون الحاجة إلى تحديد منسق.

يتم استخدام تنسيقات ISO 8601 بشكل افتراضي في java.time، لكل من التحليل وإنشاء تمثيلات سلسلة لقيم التاريخ والوقت.

LocalDate localDate = LocalDate.parse( "2015-01-02" );

المنسق

إذا كان لديك تنسيق مختلف، فحدد منسقًا من ملف java.time.format طَرد.يمكنك إما تحديد نمط التنسيق الخاص بك أو السماح لـ java.time بالترجمة تلقائيًا بما يتناسب مع ملف Locale تحديد لغة بشرية للترجمة والمعايير الثقافية لاتخاذ قرار بشأن قضايا مثل النقطة مقابل الفاصلة.

نمط التنسيق

إقرأ ال DateTimeFormatter class doc للحصول على تفاصيل حول الرموز المستخدمة في نمط التنسيق.أنها تختلف قليلا عن القديم الذي عفا عليه الزمن java.text.SimpleDateFormat أنماط الطبقة.

لاحظ كيف أن الوسيطة الثانية لـ parse الطريقة هي أ مرجع الطريقة, تمت إضافة بناء الجملة إلى Java 8 والإصدارات الأحدث.

String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "MMMM d, yyyy" , Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );

تفريغ إلى وحدة التحكم.

System.out.println ( "localDate: " + localDate );

التاريخ المحلي:2015-01-02

التعريب تلقائيا

أو بدلاً من تحديد نمط التنسيق، اسمح لـ java.time بالترجمة نيابةً عنك.يتصل DateTimeFormatter.ofLocalizedDate, ، وتأكد من تحديد المطلوب/المتوقع Locale بدلاً من الاعتماد على الإعداد الافتراضي الحالي لـ JVM والذي يمكن أن يتغير في أي لحظة أثناء وقت التشغيل (!).

String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate ( FormatStyle.LONG );
formatter = formatter.withLocale ( Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );

تفريغ إلى وحدة التحكم.

System.out.println ( "input: " + input + " | localDate: " + localDate );

مدخل:2 يناير 2015 | LocalDate:2015-01-02

ال بتقدير كبير مكتبة جودا تايم هو أيضا يستحق نظرة.وهذا هو الأساس الجديد التاريخ والوقت API التي تم رسمها بالقلم الرصاص في Java 7.التصميم أنيق وبديهي، وثق بشكل جيد ويتجنب الكثير من الخرقاء في الأصل java.util.Date / java.util.Calendar الطبقات.

جودا DateFormatter يمكن تحليل سلسلة إلى Joda DateTime.

جرب هذا:

DateFormat.parse(String)

ال DateFormat فئة لديها parse طريقة.

يرى http://java.sun.com/j2se/1.4.2/docs/api/Java/text/DateFormat.html للمزيد من المعلومات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top