我认为以这种方式存储日期是愚蠢的,你应该使用其他东西(比如时间戳)。话虽如此,我的答案来了。
我们可以将字符串转换为NSDate
对象,然后再转换回字符串并获取整数值。不要忘记使用足够宽的整数类型来保存值(例如long long
)。
NSString *dateString = @"2012-07-16 10:20:25";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [formatter dateFromString:dateString];
[formatter setDateFormat:@"yyyyMMddHHmmss"];
NSString *numericString = [formatter stringFromDate:date];
long long value = [numericString longLongValue];
但我们也可能认为字符串与日期无关,而只是我们要连接的一堆数字的容器。在这种情况下,我们只需要删除不需要的字符。这更快:
NSString *dateString = @"2012-07-16 10:20:25";
NSMutableString *string = [NSMutableString stringWithString:dateString];
[string deleteCharactersInRange:NSMakeRange(16, 1)]; // remove last colon
[string deleteCharactersInRange:NSMakeRange(13, 1)]; // remove first colon
[string deleteCharactersInRange:NSMakeRange(10, 1)]; // remove space
[string deleteCharactersInRange:NSMakeRange(7, 1)]; // remove last hyphen
[string deleteCharactersInRange:NSMakeRange(4, 1)]; // remove first hyphen
long long value = [string longLongValue];