Convertir MongoDB BSON ObjectId (oid) à temps généré en Objective-C?
-
04-10-2019 - |
Question
Je l'ai trouvé ceci:
Fonction: http://github.com/timburks /NuMongoDB/blob/master/src/bson.c#L128 octets: http://github.com/timburks/NuMongoDB/ blob / maître / src / platform_hacks.h # L55 struct: http://github.com/timburks/NuMongoDB/ blob / maître / src / bson.h # L70
Mais comment pourrais-je utiliser pour mon application iPhone qui obtient l'OID comme une chaîne à partir du serveur et que vous souhaitez extraire l'horodatage created_at? Voilà ce que j'ai jusqu'à présent. Il est une méthode Objective-C, mais je peux mettre le code c dans mon fichier .m Objective-c?
- timeFromBsonOid:(NSString *)oid {
time_t out;
memcpy(&out, oid, 4);
return out;
}
Matt
La solution
Vous pouvez convertir la chaîne OID à NSDate comme ceci:
NSString *asd = @"4c8f695bdaf9856dbe000008";
long result;
BOOL success = [[NSScanner scannerWithString:[asd substringToIndex:8]] scanHexLongLong:&result];
NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:result];
Autres conseils
La réponse de Kossi est un peu obsolète. Assurez-vous d'utiliser unsigned long long au lieu que sinon vous remarquerez peut-être un comportement étrange et se bloque sur les appareils 32bits et 64bits.
NSString *asd = @"4c8f695bdaf9856dbe000008";
unsigned long long result;
BOOL success = [[NSScanner scannerWithString:[asd substringToIndex:8]] scanHexLongLong:&result];
NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:result];