"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يؤدي تحليل سلسلة التاريخ في Java إلى ظهور "حرف النمط غير القانوني 'T'"؟

لماذا يؤدي تحليل سلسلة التاريخ في Java إلى ظهور "حرف النمط غير القانوني 'T'"؟

تم النشر بتاريخ 2024-12-23
تصفح:442

Why Does Parsing a Date String in Java Throw

حرف النمط غير القانوني "T" عند تحليل سلسلة التاريخ إلى java.util.Date

تحليل سلسلة تاريخ إلى java.util. يتطلب كائن التاريخ نمطًا يلتزم بقواعد محددة. أحد الأنماط الشائعة هو "yyyy-MM-ddThh:mm:ssZ،" والذي يمثل التواريخ بتنسيق ISO 8601.

المشكلة:
عند استخدام النمط المحدد، هناك استثناء هو تم طرحها مع الرسالة "java.lang.IllegalArgumentException: حرف نمط غير قانوني 'T'."

السبب:
يمثل الحرف "T" في النموذج فاصلًا بين مكونات التاريخ والوقت. ومع ذلك، في SimpleDateFormat الخاص بـ Java، يجب تهريب الحرف "T" بعلامات اقتباس مفردة على كلا الجانبين حتى يتم التعرف عليه بشكل صحيح.

الحل 1: الهروب من "T" في النمط
لحل المشكلة باستخدام النمط الأصلي، قم بإلغاء الحرف "T" كما يلي:

String pattern = "yyyy-MM-dd'T'hh:mm:ssZ";

الحل 2: استخدم ISO_8601_24H_FULL_FORMAT
بدلاً من ذلك، يمكنك استخدام الثابت ISO_8601_24H_FULL_FORMAT المحدد مسبقًا والذي يوفره س2597083 class:

String pattern = Q2597083.ISO_8601_24H_FULL_FORMAT;

بالنسبة لـ Java 8 والإصدارات الأعلى:
بالنسبة لـ Java 8 والإصدارات الأحدث، يوصى باستخدام فئة DateTimeFormatter بدلاً من SimpleDateFormat وInstant بدلاً من التاريخ. إليك مثال:

import java.time.Instant;
import java.time.format.DateTimeFormatter;

String dateString = "2010-10-02T12:23:23Z";
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
Instant d = Instant.parse(dateString);
System.out.println(d.getYear());

باستخدام هذه الحلول، يمكنك بنجاح تحليل سلاسل التاريخ بتنسيق ISO 8601 دون مواجهة استثناء "حرف النمط غير القانوني 'T'".

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3