سؤال

في نظام التشغيل 32 بت، مع معالج إنتل، التاريخ والوقت على سبيل المثال 2009/02/17 12:00:00 لاحظ أنه: مم / DD // س س س س

في نظام تشغيل 64 بت، مع معالج AMD، التاريخ والوقت على سبيل المثال 17-02-2009 00:00:00

والآن عندما أحاول تحليل شكل 1ST، فإنه يلقي خطأ على منصة 2ND. وهذا يعني - DateTime.Parse ( "2009/02/17 12:00:00") - يلقي خطأ - لا يمكن تحويل. في حين، على نفس المنصة، DateTime.Parse ( "17/2/2009 00:00:00") يعمل! وهذا يعني DD / MM على ما يرام، MM / DD ليست كذلك.

وما يسبب هذا؟ 64-بت OS؟ المعالج؟

وكيف يمكنني التخلص من هذه المشكلة؟

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

المحلول

وDateTimes أنفسهم لم يكن لديك الأشكال. يمكنك تحليل لهم أو تنسيقها في السلاسل. (انها مثل أرقام - لا يتم تخزين الأعداد الصحيحة في عرافة أو عشري، وانهم الأعداد الصحيحة فقط يمكنك تنسيقها في عرافة أو عشري، ولكن قيمة في حد ذاته هو مجرد رقم.)

وتنسيق سيعتمد على ثقافة نظام التشغيل (أو على نحو أدق، ثقافة موضوع، وهو عادة نفس نظام تشغيل واحد).

وأنا شخصيا أحب أن تحدد بوضوح شكل يمكنني استخدام لأي تحليل أو التنسيق، إلا أنني في الواقع عرض السلسلة إلى المستخدم ونعرف أن الثقافة هي مناسبة بالفعل.

نصائح أخرى

وتحقق الخاص بك "التاريخ والوقت صيغ" في "المنطقة واللغة" لوحة التحكم.

وأيضا، إذا كنت ترغب التاريخ والوقت لتوليد صيغة محددة، لا مجرد دعوة ToString عادي ()، ولكن تمريرها معلمة مشيرا إلى التنسيق الذي تريده. وبالمثل، إذا كنت تعرف تنسيق التاريخ تسألون لتحليل، اتصل TryParseExact ()، وأقول ذلك التنسيق الذي يتم توفير.

وانظر أيضا في MSDN القياسية التاريخ والوقت تنسيق سلاسل

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