كيفية إنتاج سلسلة داتيتيموفسيت من نودا الوقت أوفسيتداتيتيم في الافتراضي لتنسيق الثقافة الحالية?
-
21-12-2019 - |
سؤال
لنفترض أن لدي نودا تايم لوكالداتيتيم ميلوكالداتيتيم وإزاحة متغيرات ميوفست.لإنتاج سلسلة داتيتيموفسيت في تنسيق إيزو 8601 يمكنني استخدام
var offsetDateTimePattern = OffsetDateTimePattern.Create(OffsetDateTimePattern.ExtendedIsoPattern.PatternText, CultureInfo.InvariantCulture, defaultOffsetDateTime);
var resDateTimeOffsetISO8601 = offsetDateTimePattern.Format(new OffsetDateTime(myLocalDateTime, myOffset));
الآن ، أريد أيضا أن تنتج سلسلة داتيتيموفسيت في في الافتراضي لتنسيق الثقافة الحالية.
بالنسبة للولايات المتحدة الأمريكية سيكون مثل "4/10/2014 3:03:11 مساء -07:00".كنت أفكر في استخدام مزيج من" ز "نمط مع كيرنتكولتشر ل داتيتيم جزء تليها" م " شكل ل أوفست.كيف أفعل ذلك?شيء من هذا القبيل باستخدام "ز م" كنص نمط?
var offsetDateTimePatternLocal = OffsetDateTimePattern.Create("G m", CultureInfo.CurrentCulture, defaultOffsetDateTime);
var resDateTimeOffsetCurrentCulture = offsetDateTimePattern.Format(new OffsetDateTime(myLocalDateTime, myOffset));
(تم طرح سؤال تحليل ذات الصلة هنا: http://goo.gl/OVeQJT)
المحلول
أعتقد أن أفضل ما يمكن القيام به إذا كنت ترغب في الحفاظ على السلوك ثقافة علم "G"
المنسق هو شيء من هذا القبيل:
var ldtPattern = LocalDateTimePattern.CreateWithCurrentCulture("G");
var offsetPattern = OffsetPattern.CreateWithCurrentCulture("m");
var result = ldtPattern.Format(localDateTime) + " " + offsetPattern.Format(resOffset);
المشكلة هي أن OffsetDateTimePattern
ليس لديها أي أنماط قياسية مدركة للثقافة. راجع دليل المستخدم للحصول على التفاصيل.أعتقد أنه من المحتمل تصحيح هذا في إصدار مستقبلي.
إذا كنت ترغب في تنسيق مع نمط ثابت ، هل يمكن.ولكن بعد ذلك كنت بحاجة إلى معرفة نمط للثقافة مقدما.
var pattern = OffsetDateTimePattern.Create("M/dd/yyyy h:mm:ss tt o<m>", CultureInfo.InvariantCulture, defaultOffsetDateTime);
var result = pattern.Format(new OffsetDateTime(localDateTime, resOffset));