سؤال

هل هناك أي طريقة لتحليل سلسلة بتنسيق HH:MM إلى كائن تاريخ (أو غيره) باستخدام المكتبات القياسية؟

أعلم أنه يمكنني تحليل شيء مثل "17/09/2008 10:30" في كائن التاريخ باستخدام

var date:Date = new Date(Date.parse("9/17/2008 10:30");

لكني أريد تحليل الساعة 10:30 فقط بمفردها.لن يعمل التعليمة البرمجية التالية.

var date:Date = new Date(Date.parse("10:30");

أعلم أنه يمكنني استخدام RegEx مخصص للقيام بذلك بسهولة إلى حد ما، ولكن يبدو أن هذا يجب أن يكون ممكنًا باستخدام Flex API الحالي.

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

المحلول

للإجابة على سؤالك المحدد:لا، ليست هناك وظيفة مكتبة للقيام بما تريد القيام به، ولكن بعد ذلك لا توجد وظيفة مكتبة لتحليل التواريخ بتنسيق ISO، أو التنسيق الألماني، أو التنسيق السويدي، أو التواريخ التي تكون فيها السنوات بالأرقام الرومانية وما إلى ذلك.

لماذا لا تستخدم التعبيرات العادية؟هذا هو ما هم من أجله.

نصائح أخرى

إذا كان عليك استخدام التنسيق الدقيق الذي حددته، فستحتاج إلى تحليله بنفسك.

إليك مثال بسيط (لم يتم اختباره):

var str:String = "9/17/2008 10:30"

var items:Array = str.split(" ");
var dateElements:Array = items[0].split("/");
var timeElements:Array = items[1].split(":");

var n:Date = new Date(dateElements[2],
                        dateElements[0],
                        dateElements[1].
                        timeElements[0],
                        timeElements[1]);

إذا لم يتم التعبير عن الوقت بنظام 24 ساعة، فلا توجد طريقة للتحقق من AM أو PM (سيفترض الرمز AM).

كحل بسيط ومجاني، يمكنك استخدام بعض الطرق الثابتة لحقل التاريخ:

  • DateField.stringToDate(valueString:String, inputFormat:String):Date
  • DateField.dateToString(value:Date,outputFattern:String):String

لكن لسوء الحظ لا يدعمون الساعات/الدقائق/الثواني (فقط التاريخ).

في حالتك المحددة:يحتوي كائن التاريخ دائمًا على معلومات "التاريخ".إذا لم يكن الأمر مهمًا، ألا يمكنك ببساطة ربط سلسلة تاريخ قياسية قبل التحليل؟

هل فكرت في إضافة "01/01/2000" مسبقًا إلى السلسلة الزمنية ثم تطبيق التاريخ؟

بدلاً من ذلك، من المحتمل أن يكون هناك رمز مميز سيأخذ الإدخال ويقسمه على:مما يتيح لك مجموعة من السلاسل التي يمكنك تحويلها إلى أعداد صحيحة.ليس من الصعب كتابة الرمز المميز أيضًا، ويمكن أن يكون ممتعًا إذا لم يكن موجودًا في المرن.

-آدم

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