How not to lose the digits "0" when using NSDateComponents. (Iphone)

I am using Date Formatter, getting NSDateComponents. And then extracting individual components of time, such as hour, minute ... How can I extract these components as NSIntegers without losing the number “0” at the beginning of the number.

For example, today was January 1, 2010 5:05, he printed 1-1-2010-5: 5 I want 01-01-2010-05: 05

Any help would be appreciated

+4
source share
1 answer

Unable to save 0 to NSInteger . So you can choose one of the approaches here -

Avoid reprint date and date components in a different format with 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]); 

From date components

 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); 

Using NSNumberFormatter (extension of the previous block)

 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); 
+11
source

All Articles