كيف يمكنني تنسيق DateTime أو TimeZone / TimeZoneInfo لعرض ثلاث أحرف؟

StackOverflow https://stackoverflow.com/questions/1527706

سؤال

أنا أعمل مع المواصفات التي تدعو إلى تنسيق DateTime Visuliar الذي لم يكن لدي بالضرورة للعمل معه.

في وقت العمليات، يجب ختم DateTime of ofx (1 ليس 2) (إما DTClient أو DTSERVER) بتنسيق مثل هذا:
20071015021529.000

ومع ذلك، في الأمثلة تظهر:

20071015021529.000[-8:PST]    

ليس لدي مشكلة مع أول واحد باستخدام بيان

DateTime.Now.ToString("yyyyMMddHHmmss.fff")

يمكنني حتى معرفة كيفية الحصول عليها %z للحصول على الإزاحة الصحيحة.

رمز TimeZone الحرف الثلاث هو المكان الذي تنطلق فيه. هل هناك طريقة سهلة للحصول على هذا.

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

المحلول

تحتاج إلى معرفة ذلك بالضبط أي رموز حرفية يحتاجها. ماذا سوف Europe/Paris تعطي، على سبيل المثال؟ شخصيا، سأقوم بتحويل البيانات إلى UTC وتنسيقه بهذه الطريقة، إلا إذا كنت بحاجة فعلا إلى الحفاظ على معلومات المنطقة الزمنية.

نصائح أخرى

رموز المنطقة الزمنية ثلاثية الحرف ليست فريدة من نوعها عبر البلدان وليس موحدة تماما. على سبيل المثال، يمكن أن يكون "CST" اختصارا ل "الوقت القياسي المركزي (الولايات المتحدة الأمريكية)" أو "الوقت القياسي الصيني". وهو صحيح يعتمد على لغةك.

على حد علمي، لا توجد وظيفة مضمنة في .NET Framework للبحث عن رموز مثل هذا، لذلك ستحتاج إلى تنفيذها بنفسك.

بالإضافة إلى ذلك (ولكن ربما تعرف هذا)، عليك أن تكون حذرا حول كيفية تنفيذ هذه الوظيفة. لا يوجد بالضرورة مراسعة فردية بين إزاحة UTC ورموز المنطقة الزمنية. على سبيل المثال، يمكن أن يكون UTC-0700 إما الوقت القياسي لجبل الولايات المتحدة (MST) أو الوقت النهار في المحيط الهادئ الولايات المتحدة (PDT).

إذا كنت ستستخدم R، فسوف يمنحك تنسيق RFC. سوف تساعدك.

String.Format("{0:r}", dt);  // "Sun, 09 Mar 2008 16:05:07 GMT"   RFC1123

يمكنك أيضا تحقق هذا الرابط, ، إذا كان يمكن أن تساعدك.

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