سؤال

في مشروعي أحصل "2008-02-01T10: 03: 23.793-06: 00" تنسيق التاريخ هذا في السلسلة التي يجب أن أحولها إلى nsdate أنا أستخدمها

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"]; 

NSDate* dateFromString = [dateFormatter dateFromString:@"2008-02-01T10:03:23.793-06:00"];

ولكن عندما أقوم بطباعة قيمة تاريخ باستخدام NSLOG ، أحصل على قيمة خالية.

أرجوك أن تساعدني

شكرا

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

المحلول

لن تتمكن NSDateFormatter من تحليلها ، لأن المنطقة الزمنية لا تتوافق معها RFC 822 أو GMT Standard. المشكلة في الأخير ":" لجعلها تحتاج إلى "GMT".

التاريخ الذي تحترم RFC 3339.

ستحتاج إلى استخدام nsformatter لتحليله. يجب أن تستخدم getObjectValue:forString:errorDescription:

اضبط السلسلة @"yyyy-MM-dd'T'HH:mm:ss.SSSZ".

نصائح أخرى

    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
[formatter setLenient:YES];
NSString* buggeredTime = [[sourceDate substringToIndex:26] stringByAppendingString:[sourceDate substringFromIndex:27]];
NSDate* dueDate = [formatter dateFromString:buggeredTime];
[formatter setDateFormat:@"'Time Due: 'hh:mm a  MM/dd/yy"];
NSString* dateString = [formatter stringFromDate:dueDate];
[formatter release];

(Dunno Offhand إذا كانت هناك حاجة إلى setLenient.)

ما عليك سوى استخدام ذلك بدلاً من ذلك (لاحظ "zzz" بدلاً من "Z"):

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];

أعتقد أنك بحاجة إلى تعيين لغة للتكوين أيضًا. الق نظرة هنا

لدى عميل GDATA Objective-C من Google فئة (GDATADATETIME) التي يمكن أن تتمكن من تحليل RFC 3339.

http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/source/elements/gdatadatetime.m

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