Ios 显示上一个月的名称和年份
在这里,我使用了一个标签来显示当前月份和年份。它的侧面有一个按钮,可以移动到上个月。当用户按下侧面按钮时,应显示上一个月 我这样做只是为了展示本月的情况。但无法在同一标签中移动和显示上一个月Ios 显示上一个月的名称和年份,ios,objective-c,nsdate,Ios,Objective C,Nsdate,在这里,我使用了一个标签来显示当前月份和年份。它的侧面有一个按钮,可以移动到上个月。当用户按下侧面按钮时,应显示上一个月 我这样做只是为了展示本月的情况。但无法在同一标签中移动和显示上一个月 NSDate *date = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat=@"MMMM"; NSString * monthString =
NSDate *date = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat=@"MMMM";
NSString * monthString = [[dateFormatter stringFromDate:date] capitalizedString];
dateFormatter.dateFormat=@"yyyy";
NSString * yearString = [[dateFormatter stringFromDate:date] capitalizedString];
datelabel.text = [NSString stringWithFormat:@"%@ %@",monthString,yearString];
这里是我的按键方法:
- (IBAction)leftBtn:(id)sender {
}
- (IBAction)rightBtn:(id)sender {
}
因此,在normal
时,当查看加载时
应显示2015年12月
。当用户按下leftbutton
时,datelabel
应显示2015年11月
。当用户从11月
按右键
时,也应显示2015年12月
我很困惑。请帮我解决,这是我的第一个问题。帮帮我。谢谢 使用实例变量存储当前日期。加载视图时,将其设置为
[NSDate]
。更新当前代码,使其可以随时运行,并使用实例变量date更新标签
完成此操作后,请更改设置代码以获取当前日期,并使用NSDateComponents
从日期中删除日期和时间,以便在实例变量中存储的日期为每月的第一天。进行测试,以确保其工作正常,并且对用户而言外观相同
现在,您的左右按钮可以使用日期组件从实例变量日期添加或删除一个月,然后更新标签。使用实例变量存储当前日期。加载视图时,将其设置为
[NSDate]
。更新当前代码,使其可以随时运行,并使用实例变量date更新标签
完成此操作后,请更改设置代码以获取当前日期,并使用NSDateComponents
从日期中删除日期和时间,以便在实例变量中存储的日期为每月的第一天。进行测试,以确保其工作正常,并且对用户而言外观相同
现在,您的左右按钮可以使用日期组件添加或删除实例变量日期的一个月,然后更新标签。您需要使用
NSDateComponents
- (IBAction)rightBtn:(id)sender
{
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMMM yyyy"];
NSDate *tempDate = [dateFormat dateFromString:datelabel.text];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setMonth:1];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *newDate = [calendar dateByAddingComponents:dateComponents toDate:tempDate options:0];
datelabel.text = [dateFormat stringFromDate:newDate];
}
左键也是一样
- (IBAction)leftBtn:(id)sender
{
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMMM yyyy"];
NSDate *tempDate = [dateFormat dateFromString:datelabel.text];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setMonth:-1];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *newDate = [calendar dateByAddingComponents:dateComponents toDate:tempDate options:0];
datelabel.text = [dateFormat stringFromDate:newDate];
}
您需要使用
NSDateComponents
- (IBAction)rightBtn:(id)sender
{
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMMM yyyy"];
NSDate *tempDate = [dateFormat dateFromString:datelabel.text];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setMonth:1];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *newDate = [calendar dateByAddingComponents:dateComponents toDate:tempDate options:0];
datelabel.text = [dateFormat stringFromDate:newDate];
}
左键也是一样
- (IBAction)leftBtn:(id)sender
{
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMMM yyyy"];
NSDate *tempDate = [dateFormat dateFromString:datelabel.text];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setMonth:-1];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *newDate = [calendar dateByAddingComponents:dateComponents toDate:tempDate options:0];
datelabel.text = [dateFormat stringFromDate:newDate];
}
我建议使用
NSDateComponents
(从当前日期开始,然后是-1个月)来获取上一个月的NSDate
。我建议使用NSDateComponents
(从当前日期开始,然后是-1个月)来获取上一个月的NSDate
。哦,真是太棒了。谢谢你的帮助,当然它会帮助我学习。不要从视图文本来回转换,这是一个糟糕的设计和架构。在我上面的帖子中,还有一个问题。我在视图中输入了一些代码。工作正常。我的viewdidload代码还可以,或者我需要更改。@Wain我不知道如何以其他方式完成此操作,也许您可以帮助我经常使用此方法。@joseph我需要查看更多您的代码,也许还有一个问题?哦,伙计,真是太棒了。谢谢你的帮助,当然它会帮助我学习。不要从视图文本来回转换,这是一个糟糕的设计和架构。在我上面的帖子中,还有一个问题。我在视图中输入了一些代码。工作正常。我的viewdidload代码还可以,或者我需要更改。@Wain我不知道如何以其他方式完成此操作,也许您可以帮助我经常使用此方法。@joseph我需要查看更多您的代码,也许还有一个问题?哦,我知道这更好,@joseph您需要在您的实现中创建一个实例变量,例如@implementation yourViewController{NSDate*myDate
;}或在.m或.h文件中,然后只需按照@Wain的答案,在rightBtn
leftBtn
方法中使用该变量,而不是datelabel.txt。哦,我看这样更好,@joseph您需要在您的实现中创建一个实例变量,例如@implementation yourViewController{NSDate*myDate
;}或在.m或.h文件中,然后只需按照@Wain的答案,在rightBtn
leftBtn
方法中使用该变量,而不是在datelabel.txt中使用。