使用NSDateComponents时如何不丢失'0'数字.(iphone)

Jam*_*mes 4 iphone xcode nsdate nsdateformatter

我正在使用Date Formatter,获取NSDateComponents.然后提取单个时间组件,如小时,分钟......等.如何将这些组件作为NSIntegers提取,而不会丢失数字前面的'0'数字.

例如今天是2010年1月1日5:05,它将打印1-1-2010-5:5我想要01-01-2010-05:05

任何帮助,将不胜感激

Dee*_*olu 13

你无法继续留0NSInteger.因此,您可以选择其中一种方法 -

使用不同的格式避免使用日期组件和重新打印日期 NSDateFormatter

NSCalendar * gregorianCalendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];

NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"MMMM d yyyy H:mm"];
NSDate * theDate = [dateFormatter dateFromString:@"January 1 2010 5:05"];

/* Using NSDateFormatter to get the desired format */
[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm"];
NSLog(@"%@", [dateFormatter stringFromDate:theDate]);
Run Code Online (Sandbox Code Playgroud)

从日期组件

NSInteger flags = (NSHourCalendarUnit|NSMinuteCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit);
NSDateComponents * dateComponents = [gregorianCalendar components:flags
                                                         fromDate:theDate];

NSInteger hour = [dateComponents hour];
NSInteger minute = [dateComponents minute];
NSInteger year = [dateComponents year];
NSInteger month = [dateComponents month];
NSInteger day = [dateComponents day];

NSLog(@"%02ld-%02ld-%ld %02ld:%02ld", day, month, year, hour, minute);
Run Code Online (Sandbox Code Playgroud)

使用NSNumberFormatter(扩展前一个块)

NSNumberFormatter * numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setPaddingCharacter:@"0"];
[numberFormatter setMinimumIntegerDigits:2];

NSString * hourString = [numberFormatter stringFromNumber:[NSNumber numberWithInteger:hour]];
NSString * minuteString = [numberFormatter stringFromNumber:[NSNumber numberWithInteger:minute]];
NSString * yearString = [numberFormatter stringFromNumber:[NSNumber numberWithInteger:year]];
NSString * monthString = [numberFormatter stringFromNumber:[NSNumber numberWithInteger:month]];
NSString * dayString = [numberFormatter stringFromNumber:[NSNumber numberWithInteger:day]];

NSLog(@"%@-%@-%@ %@:%@", dayString, monthString, yearString, hourString, minuteString);
Run Code Online (Sandbox Code Playgroud)