هل هناك API للتحويل من "yyyymmddhmmss.uuuuuuu-tzo" تنسيق إلى C # DateTime؟
-
06-09-2019 - |
سؤال
مثال: "20080807144334.410187-180" (-180 يعني بتوقيت جرينتش ناقص ثلاث ساعات. ريو دي جانيرو في هذه الحالة.)
يتم إرجاع تنسيق هذا السلسلة عندما استفسر إنشاء ملف / تغيير / أوقات الوصول عبر WMI (لا يعمل تماما؛ انظر هنا). أعتقد أنني أستطيع تحليلها بطريقة احمق، واستخراج السنة والشهر إلخ من مواقع السلسلة. ولكن أود عدم إعادة اختراع العجلة. منشئين System.Datetime لا يتعاملون مع هذا التنسيق. يجب أن أذهب وأفعل ذلك بطريقة احمق أو هل هناك شيء أفضل؟
المحلول
يجب أن تكون قادرا على استخدام DateTime.ParseExact
أو .TryParseExact
لإعطائها تنسيق محدد لاستخدام عند التحليل.
ومع ذلك، لا أعتقد أنه يمكنك الحصول عليه لقراءة منطقتك الزمنية بهذا الشكل (على الرغم من أنني لا أستطيع معرفة كيفية الحصول عليها لقراءة منطقة زمنية بأي شكل).
ما تبقى من ذلك يبدو وكأنه هذا:
DateTime.ParseExact("20080807144334.410187", "yyyyMMddHHmmss.ffffff", System.Globalization.CultureInfo.InvariantCulture)
نصائح أخرى
يجب أن نلقي نظرة على DateTime.tryParseExact. سوف يتيح لك تمر بتنسيقك الذي تتحول إليه.
http://msdn.microsoft.com/en-us/library/system.datetime.teyparseexact.aspx.