Ios 如何获取今天的日历日期并向

Ios 如何获取今天的日历日期并向,ios,date,Ios,Date,我知道如何使用标签显示今天、月份和年份。我使用此代码 // show the present month NSDate *date = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat=@"MMMM"; NSString * monthString = [[dateFormatter stringFrom

我知道如何使用标签显示今天、月份和年份。我使用此代码

// show the present month
    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];
上述代码将显示当前月份和年份。但我需要的是。我需要做像下面的图片

一,

所以
今天的日期是12月29日
,它应该
从12月29日开始
,并且应该显示下一个
6天日期
。当用户在
明天
打开时,就像说在12月30日一样。我需要显示如下图所示:

二,

当用户在12月31日打开我的应用程序时,它应该如下显示

3

因此,当任何用户打开我的应用程序时,
current date
单独应该在
first
中,并在
接下来的6天日期中持续运行

请帮我怎么做。我是ios新手。你的帮助将对我了解更多非常有用。谢谢

编辑:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize flabel;
@synthesize slabel;
@synthesize tlabel;
@synthesize folabel;
@synthesize fivlabel;
@synthesize sixlabel;
@synthesize sevenlabel;


- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.


    NSArray *labelArray = @[flabel, slabel, tlabel, folabel, fivlabel,sixlabel, sevenlabel ];
    NSDate *today = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    dateFormatter.dateFormat = @"ddMMM";
    for (NSInteger i = 0; i < 7; ++i) {
        NSDate *nextDate = [calendar dateByAddingUnit:NSCalendarUnitDay value:i toDate:today options:nil];
        UILabel *label = (UILabel *)labelArray[i];
        label.text = [dateFormatter stringFromDate:nextDate];
    }


}
#导入“ViewController.h”
@界面视图控制器()
@结束
@实现视图控制器
@合成flabel;
@合成slabel;
@合成tlabel;
@合成叶拉贝尔;
@合成菲夫拉贝尔;
@合成六个标签;
@合成七苯拉贝尔;
-(无效)viewDidLoad{
[超级视图下载];
//加载视图后,通常从nib执行任何其他设置。
}
-(无效)未收到记忆警告{
[超级记忆警告];
//处置所有可以重新创建的资源。
NSArray*labelArray=@[flabel,slabel,tlabel,folabel,fivlabel,sixlabel,sevenlabel];
NSDate*今天=[NSDate日期];
NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];
NSCalendar*日历=[NSCalendar currentCalendar];
dateFormatter.dateFormat=@“ddMMM”;
对于(NSInteger i=0;i<7;++i){
NSDate*nextDate=[calendar Date ByAddingUnit:NSCalendarUnitDay值:i toDate:today选项:nil];
UILabel*标签=(UILabel*)标签阵列[i];
label.text=[dateFormatter stringFromDate:nextDate];
}
}

看看NSCalendar和历法计算部分

您需要获取当前日历

从开始日期开始加载月/日/年组件。(今天?)

将日期组件的小时值设置为12(以避免从夏令时更改为标准时间的日期、添加闰秒的天数等问题)

使用dateFromComponents获取有关当天中午的NSDate。我们称之为noonDate

使用“dateByAddingUnit:value:toDate:options:”向noonDate添加一天:


将dateByAddingUnit:value:toDate:options:的结果输入日期格式化程序,以所需显示格式的本地化版本显示它。

由于您知道如何从NSDate中获取所需信息,因此只需将该日期增加1天即可

这可以通过以下方式轻松实现:


此代码以
ddMMM
格式为今天和接下来的6天创建日期。将标签放入数组中,并按索引为标签指定日期

NSArray *labelArray = @[firstDateLabel, secondDateLabel ...   ];

NSDate *today = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSCalendar *calendar = [NSCalendar currentCalendar];
dateFormatter.dateFormat = @"ddMMM";
for (NSInteger i = 0; i < 7; ++i) {
  NSDate *nextDate = [calendar dateByAddingUnit:NSCalendarUnitDay value:i toDate:today options:nil];
  UILabel *label = (UILabel *)labelArray[i];
  label.text = [dateFormatter stringFromDate:nextDate];
}
NSArray*labelArray=@[firstDateLabel,secondDateLabel…];
NSDate*今天=[NSDate日期];
NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];
NSCalendar*日历=[NSCalendar currentCalendar];
dateFormatter.dateFormat=@“ddMMM”;
对于(NSInteger i=0;i<7;++i){
NSDate*nextDate=[calendar Date ByAddingUnit:NSCalendarUnitDay值:i toDate:today选项:nil];
UILabel*标签=(UILabel*)标签阵列[i];
label.text=[dateFormatter stringFromDate:nextDate];
}
然而,它并不考虑潜在的日光节约变化问题。当前日期应该调整到一个安全的时间,这样就不会出现任何问题。

您没有将问题标记为objective-c,因此我编写了一个swift代码,因为使用操场更方便

为了避免DST和类似的陷阱,我使用NSDATE组件进行计算

代码生成一个包含标签的数组

import UIKit
let cal = NSCalendar.currentCalendar()
let now = NSDate()

var dates = [NSDate]()
for i in 0..<7 {
    let comps = cal.components([.Day, .Month, .Year], fromDate: now)
    comps.day += i
    dates.append(cal.dateFromComponents(comps)!)
}

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dMMM"
let labels = dates.map { (date) -> UILabel in
    let dateSting = dateFormatter.stringFromDate(date)
    let l = UILabel()
    l.backgroundColor = UIColor.whiteColor()
    l.textColor = UIColor.blackColor()
    l.text = dateSting
    l.sizeToFit()
    return l
}
导入UIKit
设cal=NSCalendar.currentCalendar()
现在让我们=NSDate()
变量日期=[NSDate]()
因为我在0。。UILabel in
让dateSting=dateFormatter.stringFromDate(日期)
设l=UILabel()
l、 backgroundColor=UIColor.whiteColor()
l、 textColor=UIColor.blackColor()
l、 text=dateSting
l、 sizeToFit()
返回l
}

如果您使用
dateByAddingUnit
.Day
来获取下一个日期,那么所有用于确定中午日期的内容都是不必要的。请用一些代码进行解释。我有一个新的ios。请做代码解释看看Xcode文档。在“日历计算”上搜索Xcode帮助系统。试着弄清楚我描述的是什么。如果您无法让它工作,请使用您尝试过的代码更新您的问题,我或其他人将帮助您调试它,但如果我们提供您可以复制/粘贴的代码,您将不会学到多少。您得到了几个有用的答案,并用“给我代码”回答了每个问题。这不是“为我编写代码”服务。表现出一点努力。我给了你一个你需要做什么的分步大纲。如果你想雇我为你写代码,我们可以谈谈,但我很贵,也很忙。请不要用
86400
60*60*24
来代表一天。由于DST的原因,每天的时间可能是23、24或25小时。在这种情况下,标签上可能缺少一天,或者一个日期显示两次。使用
dateByAddingTimeInterval:86400
是个坏主意。要使用的方法是
dateByAddingUnit:value:toDate:options:
,这样我就可以用我的7个标签添加该日期了。text最后一行出现错误<代码>labelArray[i]。文本=…
错误是在id类型的对象上找不到属性文本。我没有得到任何日期。.我的uilabel为空。查看我的更新帖子请查看我的更新帖子。我的uilabelcheck中没有任何日期检查标签是否在Interface Builder中连接,合成属性是否在Xcode 5之后过时。我在swift中为零。我非常喜欢ios。P
import UIKit
let cal = NSCalendar.currentCalendar()
let now = NSDate()

var dates = [NSDate]()
for i in 0..<7 {
    let comps = cal.components([.Day, .Month, .Year], fromDate: now)
    comps.day += i
    dates.append(cal.dateFromComponents(comps)!)
}

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dMMM"
let labels = dates.map { (date) -> UILabel in
    let dateSting = dateFormatter.stringFromDate(date)
    let l = UILabel()
    l.backgroundColor = UIColor.whiteColor()
    l.textColor = UIColor.blackColor()
    l.text = dateSting
    l.sizeToFit()
    return l
}