Tag: i

IOS:NSDate的问题

我有这个代码: NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease]; [components setYear:2011]; [components setDay:1]; [components setMonth:4]; NSCalendar *gregorianCalendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; NSDate *firstDate = [gregorianCalendar dateFromComponents:components]; NSLog(@"date:%@", firstDate); 在控制台中的结果是: date:2011-03-31 为什么???? 如果我设置“setDay:1”,它会是“date:2011-04-01”,不是?

NSDateComponents工作日不显示正确的工作日?

我得到了一个N​​SDate例如1/6 – 12(星期五),并试图找出它是什么工作日。 我的星期一从星期一开始,星期五应该是星期五。 NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; [calendar setFirstWeekday:2]; NSDateComponents *components = [calendar components:NSWeekdayCalendarUnit fromDate:firstOfJulyDate]; NSLog(@"weekday %i",components.weekday); 输出:工作日6 无论我设置setFirstWeekday什么,输出将永远是6.我做错了什么?

设置NSDateComponents导致不正确的NSDate

我试图得到一个NSDate对象有当地时间21:00 – 不在乎哪一天。 我抓着这个非常奇怪的结果: NSCalendar *calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [[NSDateComponents alloc] init]; [components setHour:21]; [components setMinute:0]; [components setSecond:0]; NSDate *date = [calendar dateFromComponents:components]; NSLog(@"%@", date); 结果是0001-01-02 04:52:58 +0000 我不知道为什么。 目前的时间是太平洋时间17:34,但结果并不随当地时间而改变。 如果我调整setMinute和setSecond线来 [components setMinute:7]; [components setSecond:2]; 我得到0001-01-02 05:00:00 +0000 ,这是正确的(21:00 PST)。

NSDate和NSDateComponents返回错误的date

我知道这个问题被问了一百万次,我只是找不到解决办法。 问题是:我正在修改NSDate以返回当前月份的第一天的date或下一个月的第一天的date。 除了1件事外,它似乎工作正常:它将时间减去2或3个小时。 码: NSCalendar *theCalendar = [NSCalendar currentCalendar]; int comp = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; NSDateComponents *theComp = [theCalendar components:comp fromDate:date]; [theComp setTimeZone:[NSTimeZone systemTimeZone]]; switch (roundingMode) { case FIRST_OF_MONTH: [theComp setDay:1]; return [theCalendar dateFromComponents:theComp]; case FIRST_OF_NEXT_MONTH: [theComp setMonth:theComp.month+1]; [theComp setDay:1]; return [theCalendar dateFromComponents:theComp]; } 这是debugging器(gdb)输出: (gdb) po theComp <NSDateComponents: 0x6e26170> TimeZone: Europe/Kiev (EET) […]