将mongodb bson objectid(OID)转换为Objective-C中生成的时间?
-
04-10-2019 - |
题
我发现了这个:
功能: http://github.com/timburks/numongodb/blob/master/src/src/bson.c#l128字节: http://github.com/timburks/numongodb/blob/master/src/platform_hacks.h#l55结构: http://github.com/timburks/numongodb/blob/master/src/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];
其他提示
科西的答案有点过时。确保使用无符号长时间长时间使用,否则您可能会注意到奇怪的行为,并在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