如何获得年份序列,因为我只获得月份序列

Posted

技术标签:

【中文标题】如何获得年份序列,因为我只获得月份序列【英文标题】:how to get year sequence as i am getting sequence of month only 【发布时间】:2015-08-14 13:00:47 【问题描述】:

我使用以下代码获得月份序列

NSDate *aDate = [NSDate dateWithTimeInterval:row*30*24*60*60  sinceDate:self.earliestPresentedDate];

    NSDateComponents *components = [self.calendar components:(NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:[NSDate date]];
    NSDate *today = [self.calendar dateFromComponents:components];
    components = [self.calendar components:(NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:aDate];
    NSDate *otherDate = [self.calendar dateFromComponents:components];

    if ([today isEqualToDate:otherDate]) 

     else 
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        formatter.locale = [NSLocale currentLocale];
        formatter.dateFormat = @"MMM ";

        [lblDate setText:[formatter stringFromDate:aDate]];
    

我想获取年份序列如何获取...请给出解决方案

【问题讨论】:

你能详细解释一下“一年后”吗? 分钟我想要像 2015,2016,2017 一样....... 也许我理解错了。但是你为什么不做简单的事情:+1 到上一年? components.year +=1; 怎么样? 帮自己一个忙,永远不要使用“30*24*60*60”之类的东西。它可能对您和您的测试用例有用,但时间并不像看起来那么容易。想想其他时区,闰秒,闰年,dailightsavingtime。总是通过组件来做到这一点! 【参考方案1】:

如下创建一个函数,给出明年的日期,

NSDateComponents *dayComponent = [[NSDateComponents alloc] init];
    dayComponent.year = +1;

    NSCalendar *theCalendar = [NSCalendar currentCalendar];
    NSDate *newDate = [theCalendar dateByAddingComponents:dayComponent toDate:[NSDate date] options:0];

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.locale = [NSLocale currentLocale];
    formatter.dateFormat = @"yyyy";
    NSString *strDate = [formatter stringFromDate:newDate];

    NSLog(@"%@",strDate);

在标签中设置此日期。

上面我正在传递当前日期,所以我会得到年份:2016。

【讨论】:

感谢#Kirit Modi 我可以在选择器视图中使用此代码显示年份 对于pickerview,有一个年份数组。 是的,但我在选择器视图上使用上面的代码显示月份 ....我想显示年份【参考方案2】:

简单的方法,它记录了这一年和随后的 7 年。

  NSInteger howManyYears = 8;
  NSInteger thisYear = [[NSCalendar currentCalendar] component:NSCalendarUnitYear fromDate:[NSDate date]];
  for (NSInteger i = 0; i < howManyYears; ++i) 
    NSLog(@"%ld", thisYear++);
  

或获取字符串数组

  NSMutableArray *theYears = [NSMutableArray array];
  NSInteger howManyYears = 8;
  NSInteger thisYear = [[NSCalendar currentCalendar] component:NSCalendarUnitYear fromDate:[NSDate date]];
  for (NSInteger i = 0; i < howManyYears; ++i) 
    [theYears addObject:[NSString stringWithFormat:@"%ld", thisYear++]];
  
  NSLog(@"%@", theYears);

【讨论】:

以上是关于如何获得年份序列,因为我只获得月份序列的主要内容,如果未能解决你的问题,请参考以下文章

如何从当前日期获得准确的年龄(包括年份和月份)?

如何在rails中获得重复的月份和年份匹配记录?

如何在熊猫中对月份和年份进行排序以进行时间序列可视化?

r +中的时间序列图帮助需要组合月份和年份列

将不同年份的时间序列绘制在一起

R语言ggplot2可视化:可视化时间序列季节图使用季节图可以比较不同年份相同月份的数据差异或者相同(年/月/周等)的时间序列在同一天的数据差异(Seasonal Plot)