【问题标题】:Set the first of the month of a NSDate设置 NSDate 的第一个月
【发布时间】:2011-10-28 17:13:00
【问题描述】:

由于 NSDateCompoments,我正在使用递增/递减的 NSDate:

dateComponents = [[NSDateComponents alloc] init];
    self.date = [gregorian dateByAddingComponents:dateComponents toDate:[NSDate date] options:0];

...

[dateComponents setDay:1];
                    self.date = [gregorian dateByAddingComponents:dateComponents toDate:self.date options:0];
                    [dateComponents setDay:0];

现在,我想设置日期以将 NSDate 设置为每月的第一个月(以及一年中的第一个月),但我不知道该怎么做

非常感谢!!!

编辑:

 NSDateComponents *dateComponentsSetFirst = [gregorian components:( NSYearCalendarUnit |
                                                              NSMonthCalendarUnit | NSDayCalendarUnit ) fromDate:self.date];

    switch (self.segmentedControl.selectedSegmentIndex) {
        case 0:
            requestTy = @"hours";
            break;
        case 1:
            requestTy = @"days";
            NSLog (@"avant %@",self.date);
            [dateComponents setDay:1];
            self.date = [gregorian dateFromComponents:dateComponentsSetFirst];
            [dateComponents setDay:0];
            NSLog (@"après %@",self.date);
            break;
        case 2:
            requestTy = @"months";
            NSLog (@"before %@",self.date);
            [dateComponents setMonth:1];
            self.date = [gregorian dateFromComponents:dateComponentsSetFirst];
            [dateComponents setMonth:0];
            NSLog (@"after : %@",self.date);
            break;
        default:
            break;
    }

给我

2011-08-17 11:23:34.365 e-mars[20942:207] avant 2011-08-17 09:23:30 GMT
2011-08-17 11:23:34.366 e-mars[20942:207] après 2011-08-16 22:00:00 GMT

当我通过案例 1 时!

2011-08-17 11:26:05.747 e-mars[20942:207] before 2011-08-16 22:00:00 GMT
2011-08-17 11:26:05.747 e-mars[20942:207] after : 2011-08-16 22:00:00 GMT

当我通过案例 2 时!

【问题讨论】:

  • [dateComponentsSetFirst setDay:1]替换[dateComponents setDay:1]
  • hum .... stuuupid ;-) 我尝试使用旧的日期组件...

标签: iphone xcode nsdate nsdatecomponents


【解决方案1】:

您没有向日期添加组件。您只需从给定日期初始化 dateComponents,设置日期和月份(如果需要,还可以设置年份),然后获取 dateFromComponents。 Apple Date and Time Programming Guide

NSDateComponents *dateComponents = [gregorian components:( NSYearCalendarUnit |
NSMonthCalendarUnit | NSDayCalendarUnit ) fromDate:[NSDate date]];
[dateComponents setDay:1];
[dateComponents setMonth:1];
self.date = [gregorian dateFromComponents:dateComponents];

【讨论】:

  • 显然,它不起作用:'(它让我在 1901 年 12 月 ... ^^
  • 你是否从一个日期初始化了 dateComponents?
  • 我已经编辑了我的第一篇文章。 self.date 是日期。现在,我输入的行显然不起作用......日期未设置为第一个
  • 我觉得它看起来不错。 NSLog self.date 在您为其分配新值后。为什么在 dateFromComponents 之后将 dateComponents 的日期设置为 0?
猜你喜欢
  • 1970-01-01
  • 2011-09-29
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多