تحويل mongodb bson ObjectID (OID) إلى الوقت الذي تم إنشاؤه في Objective-C؟
-
04-10-2019 - |
سؤال
لقد وجدت هذا:
وظيفة: http://github.com/timburks/numongodb/blob/master/src/bson.c#l128بايت: http://github.com/timburks/numongodb/blob/master/src/platform_hacks.h#l55الهيكل: http://github.com/timburks/numongodb/blob/master/src/bson.h#l70
ولكن كيف يمكنني بالضبط استخدام هذا لتطبيق iPhone الخاص بي الذي يحصل على OID كسلسلة من الخادم وأريد استخراج الطابع الزمني Created_AT؟ هذا ما لدي حتى الآن. إنها طريقة Objective-C ، لكن هل يمكنني وضع رمز C في ملف Objective-C .M الخاص بي؟
- timeFromBsonOid:(NSString *)oid {
time_t out;
memcpy(&out, oid, 4);
return out;
}
غير لامع
المحلول
يمكنك تحويل سلسلة OID إلى nsdate مثل هذا:
NSString *asd = @"4c8f695bdaf9856dbe000008";
long result;
BOOL success = [[NSScanner scannerWithString:[asd substringToIndex:8]] scanHexLongLong:&result];
NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:result];
نصائح أخرى
إجابة كوسي قديمة قليلاً. تأكد من استخدام Long Long غير موقعة بدلاً من ذلك ، وإلا فقد تلاحظ سلوكًا غريبًا ويتعطل على جهاز 32 بت و 64 بت.
NSString *asd = @"4c8f695bdaf9856dbe000008";
unsigned long long result;
BOOL success = [[NSScanner scannerWithString:[asd substringToIndex:8]] scanHexLongLong:&result];
NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:result];
لا تنتمي إلى StackOverflow