Convertir MongoDB BSON OBJECTID (OID) de tiempo generado en Objective-C?
-
04-10-2019 - |
Pregunta
he encontrado esto:
Función: http://github.com/timburks /NuMongoDB/blob/master/src/bson.c#L128 bytes: http://github.com/timburks/NuMongoDB/ blob / maestro / src / platform_hacks.h # L55 struct: http://github.com/timburks/NuMongoDB/ blob / maestro / src / bson.h # L70
Pero, ¿cómo exactamente iba a utilizar esto para mi aplicación para el iPhone que obtiene el OID como una cadena desde el servidor y quiere extraer la marca de tiempo created_at? Esto es lo que tengo hasta ahora. Es un método de Objective-C, pero puedo poner el código c en mi archivo .m Objetivo-c?
- timeFromBsonOid:(NSString *)oid {
time_t out;
memcpy(&out, oid, 4);
return out;
}
Matt
Solución
Puede convertir la cadena OID a NSDate como esto:
NSString *asd = @"4c8f695bdaf9856dbe000008";
long result;
BOOL success = [[NSScanner scannerWithString:[asd substringToIndex:8]] scanHexLongLong:&result];
NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:result];
Otros consejos
La respuesta de Kossi un poco fuera de fecha. Asegúrese de utilizar unsigned long long en lugar de lo contrario es posible que observe un comportamiento extraño y se estrella en los dispositivos 32 y 64 bits.
NSString *asd = @"4c8f695bdaf9856dbe000008";
unsigned long long result;
BOOL success = [[NSScanner scannerWithString:[asd substringToIndex:8]] scanHexLongLong:&result];
NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:result];