【问题标题】:How to get start date of current year in iOS如何在iOS中获取当前年份的开始日期
【发布时间】:2015-05-13 08:20:05
【问题描述】:

我不知道在这种情况下如何使用NSDateNSCalendar
帮我解决这个问题。

【问题讨论】:

  • 每年从 1 月 1 日开始,不是吗?
  • 其实我没有得到你的问题,你能不能简单描述一下你的问题。
  • 其实我得到的是当年的第一个日期。即本年度 1-1-2015。明白了吗?
  • 是的,如果年份是 2015,那么当前日期是 1-1-2015 如果年份是 2016,那么日期是 1-1-2016

标签: ios objective-c nsdate nscalendar


【解决方案1】:

这可以比其他答案更干净:

NSDate *startOfYear;

[[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitYear startDate:&startOfYear interval:0 forDate:[NSDate date]];

startOfYear 现在在当年的 1 月 1 日午夜举行。

【讨论】:

  • 绝对是最干净的答案。它不能很好地反映 NSDate API,人们必须非常努力地为这个完全合理的问题提出解决方案。
【解决方案2】:
-(NSDate *)getFirstDateOfCurrentYear
 {
  //Get current year
  NSDate *currentYear=[[NSDate alloc]init];
  currentYear=[NSDate date];
  NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
  [formatter1 setDateFormat:@"yyyy"];
  NSString *currentYearString = [formatter1 stringFromDate:currentYear];

  //Get first date of current year
  NSString *firstDateString=[NSString stringWithFormat:@"10 01-01-%@",currentYearString];
  NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
  [formatter2 setDateFormat:@"hh dd-MM-yyyy"];
  NSDate *firstDate = [[NSDate alloc]init];
  firstDate = [formatter2 dateFromString:firstDateString];

  return firstDate;
 }

【讨论】:

    【解决方案3】:
    NSDateComponents *components = [calendar components:units fromDate:[NSDate date]];
    [components setDay:1];
    self.currentDate = [calendar dateFromComponents:components];
    int m = components.month;
    int y = components.year;
    int d = components.day;
    
    
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"yyyy MM dd"];
    NSDate *firstDateOfMonth = [df dateFromString:[NSString stringWithFormat:@"%@ %@ 01",y,m]];
    NSDate *firstDateOfYear = [df dateFromString:[NSString stringWithFormat:@"%@ 01 01",y]];
    

    【讨论】:

    • @MihirOza 我没听懂你
    • 谢谢你和@BrittoThomas 我的回答。
    【解决方案4】:
    NSDate *now = [NSDate date];
    NSDateComponents *components= [[NSCalendar currentCalendar] components:NSCalendarUnitYear fromDate:now];
    components.month = 1;
    components.day = 1;
    NSDate *firstDayOfYear = [[NSCalendar currentCalendar] dateFromComponents:components];
    

    【讨论】:

    • 嗨,兄弟。有可能得到一年中的最后一个日期吗?
    • @KrutarthPatel 您可以获得一年中的第一天,然后从该日期开始减去 1 天
    【解决方案5】:
     - (NSDate *)firstDateOfCurrentYear
     {
    
         NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
         [fmt setDateFormat:@"YYYY-01-01 00:00:00 0000"];
         NSString *dateStr = [fmt stringFromDate:[NSDate date]];
         [fmt setDateFormat: @"YYYY-MM-DD HH:mm:ss zzzz"];
         NSDate *firstDate = [fmt dateFromString:dateStr];
         return firstDate;
     }
    

    【讨论】:

      猜你喜欢
      • 2019-12-02
      • 2022-12-04
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多