0

我有字符串包含这个2012-07-16 10:20:25,我想将DateTime格式更改为yyyyMMddHHmmss它将是20120716102025并且想要但是这个数字在intvar 中。

我试过了。

NSDateFormatter *ConvertFormat;
int *DateTimeConverted;

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

DateTimeConverted = [ConvertFormat stringFromDate:StringDateTime];
4

3 回答 3

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]

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

于 2012-07-24T14:16:28.853 回答
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];
于 2012-07-24T14:28:03.837 回答
0

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

long long int DateTimeConverted = [[ConvertFormat stringFromDate:/* your date object */] longlongInt];
于 2012-07-24T15:05:01.233 回答