如何从 NSDate 获取当前日期、时间、年份?

Posted

技术标签:

【中文标题】如何从 NSDate 获取当前日期、时间、年份?【英文标题】:How to get Current Date, Time, Year from NSDate? 【发布时间】:2015-01-15 05:34:54 【问题描述】:

情况是这样的

我有一个方法

+ (NSDateComponents *)getTodayComponents 
    NSDate *today = [[NSDate alloc] init];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    return [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth fromDate:today];

通过它我可以得到今天的日、月、年、时、分等等

现在我需要更改来自另一个NSDate 的日、月和年,所以我的代码看起来像

- (void)datePickerView:(RSDFDatePickerView *)view didSelectDate:(NSDate *)date 
    NSDate *today = [[NSDate alloc] init];
    NSDateComponents *todayComponents = [Helper getTodayComponents];
    self.transactionDate = date;
    NSLog(@"%@", [date description]);
    self.inputDateField.text =  [[Helper getDateFormatterForClient] stringFromDate:self.transactionDate];
    [self.inputDateField resignFirstResponder];


问题

如何从today获取年、日、月,以便在todayComponents中进行设置?

【问题讨论】:

查看NSDateComponents 的文档。各种组件都有明显的属性。 您是指在选择器上选择的日期吗? - 即参数date?只需将它传递给您的辅助函数并使用它来代替新的日期对象。 【参考方案1】:

根据我对您的查询的理解,您想要实现的是您通过选择器获取的其他日期的组件,然后修改这些组件以在 UITextField 中显示日期。

所以添加或修改现有方法

+ (NSDateComponents *)getTodayComponentsFromDate:(NSDate *)theDate 
    NSCalendar *calendar = [NSCalendar currentCalendar];
    return [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth fromDate:theDate];

或者,如果您只想以特定格式显示从日期选择器中选择的日期,那么我建议您使用 NSDateFormatter 来执行此操作。

【讨论】:

以上是关于如何从 NSDate 获取当前日期、时间、年份?的主要内容,如果未能解决你的问题,请参考以下文章

如何从python上的当前日期获取年份? [复制]

谓词,从 NSDate 中按年份过滤,产生一个 nil 日期和一个讽刺的 Xcode 错误

如何在所有情况下从 NSDate 获得正确的年份?

如何获取有关月份和年份的数据

如何在iphone中找出当前年份是不是闰年[重复]

如何仅使用月份和日期从核心数据中获取