【发布时间】:2016-03-31 16:09:06
【问题描述】:
我有dateString,格式为"mm/dd/yyyy '-' HH:mm"。
我想提取字符串中的日期和字符串中的小时。
我尝试了以下代码,但这返回了错误的日期:
- (void) extractDate: (NSString *)dateString intoHour: (NSString *)hourLabel and: (NSString*)dateLabel {
NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
[formatter setDateFormat:@"mm/dd/yyyy '-' HH:mm"];
NSData *date = [formatter dateFromString:dateString];
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSHourCalendarUnit | NSMinuteCalendarUnit fromDate:date];
hourLabel = [NSString stringWithFormat:@"%lu:%lu", [components hour], [components minute]];
dateLabel = [NSString stringWithFormat:@"%lu/%lu/%lu", [components day], [components month], [components year]];
}
示例字符串:"05/01/2015 - 11:15"
结果:日期:1/1/2015,时间:11:15
还有我怎样才能保持这种日期格式dd/mm/yyyy,我的意思是当一天是1时,它显示01
【问题讨论】:
-
MM为该月,否则为分钟(因为您已经使用过)。如果需要,NSNumberFormatter 可以使用前导零。或者你可以从你得到的日期使用NSDateFormatter,而不是使用NSDateComponents:[formatter setDateFormat:@"MM/dd/yyyy"]; dateLabel = [formatter stringFromDate:date]; [formatter setDateFormat:@"HH:mm"]; hourLabel = [formatter stringFromDate:date];顺便说一下hourLabel/dateLabel作为NSString而不是UILabel是一个相当误导的变量命名. -
您应该使用
NSDateFormatter来执行此操作。但是为了您的兴趣,使用[NSString stringWithFormat:@"%02d", [components day]]会为您完成这项工作, -
如何使用
NSDateFormatter获取字符串中的各个部分
标签: ios objective-c nsdate nsdateformatter nsdatecomponents