Iphone String DateTime以int更改格式

时间:2012-07-24 10:23:15

标签: iphone objective-c

我有字符串包含此2012-07-16 10:20:25,我想将DateTime格式更改为yyyyMMddHHmmss它将是20120716102025,但想要int中的此数字} var。

我试过了。

NSDateFormatter *ConvertFormat;
int *DateTimeConverted;

ConvertFormat = [[NSDateFormatter alloc] init];
[ConvertFormat setDateFormat:@"yyyyMMddHHmmss"];

DateTimeConverted = [ConvertFormat stringFromDate:StringDateTime];

3 个答案:

答案 0 :(得分:0)

最有可能找到其他更准确的解决方法,例如使用1970年的秒(或其他),但如果你必须这样做......

使用NSDateComponents,您可以从所需的字符串中抓取每个数字:

NSDateComponents *todayComponents = [gregorian components:(NSWeekdayCalendarUnit |NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:date];
NSInteger day = [todayComponents day];
NSInteger month = [todayComponents month];

上面的示例并不完整,但应该让您了解它是如何完成的。

然后你需要创建一个由上述所有值组成的整数字符串,如:

NSString *stringDate = [NSString stringWithFormat:@"%i%i",day,month];

然后将其转换回int值:

int finalValue = [stringDate intValue]

我从未这样做过,但这是我最初的做法。

答案 1 :(得分:0)

我认为以这种方式存储日期是愚蠢的,你应该使用别的东西(比如时间戳)。话虽这么说,我的答案就在这里。

我们可以将字符串转换为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];

答案 2 :(得分:0)

您应该尝试在代码中添加以下行:

long long int DateTimeConverted = [[ConvertFormat stringFromDate:/* your date object */] longlongInt];