我有一个标签,我想要保留一个特定的日期。初始日期应该是当前日期,并且用户应该能够以一天的间隔逐步完成该时间。经过一番研究后,我发现最好设置NSDateComponents并将它们添加到当前日期。
我的问题如下:当我逐步完成时,一切似乎都很好,直到我到达年底/年初。例如,标签中的日期保留是01.01.2014,当我点击" previousDayButton"它将成为31.12.2014。我考虑过要求日期,然后手动设置年份,但我无法想到这是解决方案。
所以这是我的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self setupInterface];
}
- (void)setupInterface{
orderDate = [NSDate date];
[self updateDateLbl];
}
- (void)updateDateLbl{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd.MM.YYYY"];
dateLbl.text = [dateFormatter stringFromDate:orderDate];
}
- (IBAction)nextDay:(id)sender {
NSDateComponents *comps = [[NSDateComponents alloc]init];
comps.day = 1;
orderDate = [[NSCalendar currentCalendar] dateByAddingComponents:comps toDate:orderDate options:0];
[self updateDateLbl];
}
- (IBAction)previousDay:(id)sender {
NSDateComponents *comps = [[NSDateComponents alloc]init];
comps.day = -1;
orderDate = [[NSCalendar currentCalendar] dateByAddingComponents:comps toDate:orderDate options:0];
[self updateDateLbl];
}
我希望得到一些帮助:)
答案 0 :(得分:3)
对NSDateFormatter使用Xcode帮助。来自文档:
它使用yyyy指定年份组件。一个常见的错误是使用YYYY。 yyyy指定日历年,而YYYY指定ISO年度日历中使用的年份(“年度周”)。在大多数情况下,yyyy和YYYY会产生相同的数字,但它们可能会有所不同。通常,您应该使用日历年。
2014年周三开始。 2013年12月31日星期二,同一周 - 2014年第1周。这就是YYYY所展示的。 yyyy展示2013年。