cocoa - 从 NSCalendar 获取一个月的第一天

标签 cocoa cocoa-touch calendar nscalendar nsdatecomponents

我有一个方法的子集,需要获取当月的第一天。

NSDate *today = [NSDate date];  // returns correctly 28 february 2013
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
components.day = 1;
NSDate *dayOneInCurrentMonth = [gregorian dateByAddingComponents:components toDate:today options:0];

dayOneInCurrentMonth 然后打印出 2013-03-01 09:53:49 +0000,即下个月的第一天。

如何获取当前月份的第一天?

最佳答案

您的逻辑是错误的:您不是将日期设置为 1,而是在当前日期上添加了一天。

尝试类似的事情:

NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDateComponents *components = [gregorian components:(NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit) fromDate:today];
components.day = 1;

NSDate *dayOneInCurrentMonth = [gregorian dateFromComponents:components];

关于cocoa - 从 NSCalendar 获取一个月的第一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15132547/

相关文章:

objective-c - 显示器连接或断开连接时的通知

ios - 设置值 :ForKey: instead of set(whatever)?

objective-c - 如何计算 NSMutableArray 的每个内容的哈希 MD5?

objective-c - Document.xib 包含两个窗口,其中一个窗口需要是首选项面板

cocoa - 当 WebView 添加到 NSWindow 中的特定 View 时,:hover stops working. 如何修复此问题?

ios - 在多个子类之间共享 Storyboard View Controller

objective-c - 为什么 UINavigaionController 的子类会调用默认构造函数和自定义构造函数?

c# - 日历控件 - 以编程方式突出显示日期

ios - swift-如何在特定日期和时间打开日历应用程序?

swift - 日期组件出错