2012-07-24 45 views
0

诠释我有字符串包括此2012-07-16 10:20:25,我想改变DateTime格式来yyyyMMddHHmmss这将是20120716102025和希望,但这个数字在int变种。iPhone字符串日期时间要变革格式

我试过了。

NSDateFormatter *ConvertFormat; 
int *DateTimeConverted; 

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

DateTimeConverted = [ConvertFormat stringFromDate:StringDateTime]; 
+0

我可以问你为什么在格式想要一个int?你会不会更好地存储时间戳? – 2012-07-24 10:25:48

+0

什么是StringDateTime的值?你为什么不使用'NSDate'对象?或者它的时间戳值? – Templar 2012-07-24 10:26:39

+0

,因为我想在核心图表中使用它。 StringDateTime's include =“2012-07-16 10:20:25”我想要它int = 20120716102025 – user1526898 2012-07-24 10:35:46

回答

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]

我从来没有这样做过,但这将是我最初的做法。

+0

不要忘记'int'不够宽,无法存储20120716102025。 – 2012-07-24 14:38:37

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]; 
0

你应该尝试添加到您的代码以下行:

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