سؤال

لسبب ما، يقوم كود ASP.NET الموجود على الخادم الخاص بي الآن بإرجاع تنسيق ي ي/ش ش/س س س س بدلاً من ش ش / ي ي / س س س س عندما أستخدم DateTime.ToString("ز").

بدلاً من استبدال جميع سلاسل التنسيق "g" بسلسلة تنسيق محددة أو وسيطة CultureInfo، هل هناك طريقة يمكنني من خلالها تجاوز تنسيق "التاريخ القصير" الافتراضي عبر التطبيق؟

تفضيلي هو في الواقع "yyyy-MM-dd" كتنسيق افتراضي، ولكن يمكنني التعايش مع MM/dd/yyyy الذي يتمحور حول الولايات المتحدة، نظرًا لأن جميع المستخدمين موجودون في الولايات المتحدة.

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

أريد فقط تجاوز أي استدعاء ToString("g") لاستخدام تنسيق التاريخ ISO/IEC 8824 ("yyyy-MM-dd").

يمكنني البحث والاستبدال عبر الكود الخاص بي لفرض CultureInfo في كل استدعاء ToString()، لكن هذا لا يبدو لي باعتباره الحل الأكثر قابلية للصيانة.

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

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

المحلول 2

لم يكن تعيين الثقافة خيارًا متاحًا، ولم يكن يعتمد على الإعدادات الإقليمية للخادم.

انتهى بي الأمر بكتابة وظيفة مساعدة لتنسيق التواريخ:

Public Shared Function FormatShortDate(ByVal d As Date) As String
    If d=#1/1/0001# Then Return ""
    If d=#1/1/1900# Then Return ""
    'ISO/IEC 8824 date format
    Return d.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture)
End Function

أسمي هذا في كل مكان أحتاج فيه إلى إرسال موعد إلى المستخدم.كما أنه يتعامل مع عرض التواريخ الافتراضية ("السحرية").

لقد كتبت بعض الوظائف المشابهة لـ FormatShortDateTime وFormatLongDateTime.

نصائح أخرى

يمكنك تعيين الثقافة الافتراضية على web.config (مستوى التطبيق)، أو توجيه الصفحة، أو توجيه التحكم.

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

يمكنك التعامل مع تنسيق التاريخ القصير عن طريق تغيير الإعداد في الإعدادات الإقليمية في لوحة التحكم على الخادم الخاص بك.

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