قم بتحويل NSDate إلى NSString مع NSDateFormatter مع المنطقة الزمنية دون معدّل وقت GMT

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

سؤال

أقوم بتهيئة nsdateformatter الخاصة بي وبالتالي:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss z"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate *date = [NSDate date];
NSString *dateString = [dateFormatter stringFromDate:date];

dateString هو الآن:

Thu, 29 Jul 2010 14:58:42 GMT+00:00

أريد التخلص من "+00: 00"

أنا أخمن من http://unicode.org/reports/tr35/tr35-6.html#time_zone_fallback قد يكون لدي مشكلة توطين. أنا أعمل حول هذا الآن عن طريق إزالة "+00: 00" يدويًا ، لكن هذا ليس مثاليًا.

تعديل

جربت عدة طرق جديدة لإنشاء nstimezone ، لكن كلاهما ينتج نفس الشيء dateString:

[NSTimeZone timeZoneWithName:@"GMT"];
[NSTimeZone timeZoneWithName:@"UTC"];
[NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[NSTimeZone timeZoneWithAbbreviation:@"UTC"];
هل كانت مفيدة؟

المحلول

قم بإزالة الحرف "Z" المتخلف من سلسلة التنسيق إذا كنت لا ترغب في عرض المنطقة الزمنية.

تعديل

من ناحية أخرى ، إذا كنت ترغب فقط في عرض اسم المنطقة الزمنية ، فقط قم بعمل الحرف الكبيرة "Z". ((تحرير: اترك الحرف الصغيرة "Z" لـ TimeZone المسماة ، IE PST و ExtraCcase 'Z' لـ -0800)))

تعديل

تعمل Sopcase 'Z' بشكل جيد لجميع المناطق الزمنية الأخرى ، ولكن للأسف GMT هي حالة خاصة. لذا فإن أسهل شيء يجب فعله هو مجرد حذف "Z" وإلحاق "GMT" بتاريخ التنسيق.

نصائح أخرى

كان إجابة مقبولة مطبعية.

من ناحية أخرى ، إذا كنت ترغب فقط في عرض اسم المنطقة الزمنية ، فقط قم بعمل الحرف الكبيرة "Z".

اترك الصغار "Z" للمنطقة الزمنية المسماة ، أي PST و ExtraCcase "Z" لـ -0800

    NSDateFormatter *format = [[NSDateFormatter alloc] init];
    [format setDateFormat:@"MMMM dd, yyyy (EEEE) HH:mm:ss z Z"];
    NSDate *now = [NSDate date];
    NSString *nsstr = [format stringFromDate:now];

// 23 يناير 2013 (الأربعاء) 12:33:46 PST -0800

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