我有一个标签,我想保留一个特定的日期。初始日期应该是当前日期,并且用户应该能够按一天的间隔逐步浏览时间。经过一些研究,我发现最好设置 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];
}
我希望得到一些帮助:)
最佳答案
使用 NSDateFormatter 的 Xcode 帮助。来自文档:
它使用 yyyy 来指定年份部分。一个常见的错误是使用 YYYY。 yyyy 指定日历年,而 YYYY 指定年份(“一年中的第几周”),用于 ISO 年-周日历。在大多数情况下,yyyy 和 YYYY 产生相同的数字,但它们可能不同。通常,您应该使用日历年。
2014 年从星期三开始。 2013 年 12 月 31 日,星期二,在同一周 - 2014 年的第 1 周。这就是 YYYY 显示的内容。 yyyy 显示 2013。
关于ios - NSDate - 添加天数不会改变年份值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22480974/