سؤال

هل يعرف أحد كيفية تحويل تاريخ JSON (القراد) إلى NSDate في الهدف - ج؟ يمكن للشخص نشر بعض الكود؟

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

المحلول

أنا أظن هنا ولكن قيمة JSON الخاصة بك هي عدد المللي ثانية منذ عام 1970، أليس كذلك؟ يمكنك استخدام NSDate dateWithTimeIntervalSince1970: طريقة لإرجاع كائن NSDate مع الوقت الصحيح. فقط تأكد من تحويل رقم JSON MilliseConds إلى ثوان قبل تمريرها إلى NSDate - يستخدم Cocoa NstimeInterval في معظم الأماكن، والذي يمثل فاصل زمني في ثوان.

نصائح أخرى

يذهب تقريبا مثل هذا:

// Input string is something like: "/Date(1292851800000+0100)/" where
// 1292851800000 is milliseconds since 1970 and +0100 is the timezone
NSString *inputString = [item objectForKey:@"DateTimeSession"];

// This will tell number of seconds to add according to your default timezone
// Note: if you don't care about timezone changes, just delete/comment it out
NSInteger offset = [[NSTimeZone defaultTimeZone] secondsFromGMT];

// A range of NSMakeRange(6, 10) will generate "1292851800" from "/Date(1292851800000+0100)/"
// as in example above. We crop additional three zeros, because "dateWithTimeIntervalSince1970:"
// wants seconds, not milliseconds; since 1 second is equal to 1000 milliseconds, this will work.
// Note: if you don't care about timezone changes, just chop out "dateByAddingTimeInterval:offset" part
NSDate *date = [[NSDate dateWithTimeIntervalSince1970:
                 [[inputString substringWithRange:NSMakeRange(6, 10)] intValue]]
                dateByAddingTimeInterval:offset];

(من https:/gist.gist.github.com/726910.)

يجب عليك اكتشاف لغة العميل من أجل أن تكون قادرا على القيام بذلك، وما لم يعرف عميلك كيفية القيام بذلك، فمن المحتمل ألا يكون هناك الكثير من النقاط.

NSDate's الوصف NSDATELocale: ستكون الطريقة التي تهددها على لغة أخرى. وستعود Timeintvalsince1970 إلى (بالثواني) منذ عام 1970، والتي يمكنك مضاعفة بنسبة 1000 للحصول على MS للعودة إلى العميل. كل شيء في وثائق NSDate.

http://developer.apple.com/documentation/cocoa/Reference/foundation/classes/nsdate_class/Reference/Reference.html.

وفقا لهذه الصفحة: http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx. تبدأ القراد في 1 يناير، 0001 dateWithTimeIntervalSince1970: ليس الإعداد تلقائيا للعمل مع القراد. لا يزال بإمكانك استخدام هذه الطريقة ولكن يجب ضبط الفرق.

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