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

标签 iphone xcode nsdate nsdateformatter

我正在使用日期格式化程序,获取 NSDateComponents。然后提取各个时间组成部分,例如小时、分钟等。 如何将这些组件提取为 NSIntegers,而不丢失数字前面的“0”数字。

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

如有任何帮助,我们将不胜感激

最佳答案

您无法将 0 保留在 NSInteger 中。因此,您可以在此处选择一种方法 -

避免使用日期组件并使用 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]);

起始日期组件

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

使用 NSNumberFormatter(扩展前一个 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);

关于iphone - 使用 NSDateComponents 时如何不丢失 '0' 数字。(iphone),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6445050/

相关文章:

ios - 如何在特定日期触发下载

iphone - 如何从 NSDate 中获取日期组件?

ios - 'NSDate' 可能不会响应 +dateWithString

iphone - 选择 UITabBar 时调用方法?

android - 什么是最好的 android 和 iphone 游戏框架

ios - 更改 .swift 以连接到 TableView Controller 而不是 View Controller

ios - GoogleDataTransport][I-GDTCOR001006] 问题?

iphone - 删除 iOS 上 HTML 邮件右侧的 ~20px 间隙

ios - Apple Watch 上的 Shazam 如何工作? (麦克风访问)

ios - 从另一个 Viewcontroller 获取 ibeacon major 和 minor id