Konvertieren MongoDB BSON ObjectId (oid) generiert Zeit in Objective-C?
-
04-10-2019 - |
Frage
Ich habe dies gefunden:
Funktion: http://github.com/timburks /NuMongoDB/blob/master/src/bson.c#L128 Bytes http://github.com/timburks/NuMongoDB/ Blob / Master / src / platform_hacks.h # L55 Struktur: http://github.com/timburks/NuMongoDB/ Blob / Master / src / bson.h # L70
Aber wie genau würde ich dies für meinen iPhone-App, die die oid als Zeichenfolge vom Server bekommt und will die created_at Zeitstempel extrahieren? Das ist, was ich bisher haben. Es ist eine Objective-C-Methode, aber ich kann setzen c Code in meiner Objective-c .m-Datei?
- timeFromBsonOid:(NSString *)oid {
time_t out;
memcpy(&out, oid, 4);
return out;
}
Matt
Lösung
Sie können die oid Zeichenfolge NSDate konvertieren wie folgt aus:
NSString *asd = @"4c8f695bdaf9856dbe000008";
long result;
BOOL success = [[NSScanner scannerWithString:[asd substringToIndex:8]] scanHexLongLong:&result];
NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:result];
Andere Tipps
Kossi Antwort ist ein bisschen veraltet. Stellen Sie sicher, long long unsigned zu verwenden, anstatt wie sonst können Sie ungewöhnliches Verhalten bemerken und stürzt auf 32-Bit und 64-Bit-Geräte.
NSString *asd = @"4c8f695bdaf9856dbe000008";
unsigned long long result;
BOOL success = [[NSScanner scannerWithString:[asd substringToIndex:8]] scanHexLongLong:&result];
NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:result];