【问题标题】:finding out days remain from array of dates [duplicate]从日期数组中找出剩余天数[重复]
【发布时间】:2013-03-13 05:05:38
【问题描述】:

我有一个类似下面的数组

_combinedBirthdates(
"03/12/2013",
"03/12/2013",
"08/13/1990",
"12/09/1989",
"02/06",
"09/08",
"03/02/1990",
"08/22/1989",
"03/02",
"05/13",
"10/16",
"07/08",
"08/31/1990",
"04/14/1992",
"12/15/1905",
"08/14/1989",
"10/07/1987",
"07/25",
"07/17/1989",
"03/24/1987",
"07/28/1988",
"01/21/1990",
"10/13"

)

这都是NSString

我正在尝试从中创建新数组,其中包含剩余天数,如下所示

(特定生日的剩余天数) (我们会将当前日期与上述日期数组进行比较,然后找出剩余天数) _newarray( "125", “100”, "65", 直到这样结束.. )

我正在使用下面的代码

unsigned int unitFlags =  NSDayCalendarUnit;
NSCalendar *currCalendar = [[NSCalendar alloc]
                            initWithCalendarIdentifier:NSGregorianCalendar];


NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateStyle:NSDateFormatterShortStyle];
NSLog(@" currCalendar%@",currCalendar);

NSMutableArray * _newarray = [[NSMutableArray alloc] init];
for (NSString * str in _combinedBirthdates){

    NSDate * toDate = [dateFormatter dateFromString:str];
    NSDateComponents *daysInfo = [currCalendar components:unitFlags fromDate:[NSDate date]  toDate:toDate  options:0];
    int days = [daysInfo day];
    [_newarray addObject:[NSString stringWithFormat:@"%d",days]];
}
NSLog(@" _newarray%@",_newarray);

这就是我打印 _newarray 时得到的输出,请帮助我,谢谢

_newlymadeArray(
"-1",
"-1",
"-8248",
"-8495",
"-4454",
"-4454",
"-8412",
"-8604",
"-4454",
"-4454",
"-4454",
"-4454",
"-8230",
"-7638",
"-39170",
"-8612",
"-9289",
"-4454",
"-8640",
"-9486",
"-8994",
"-8452",
"-4454",
"-2072",
"-888",
"-8315"
)

【问题讨论】:

  • 我无法得到你真正想要的 :(
  • 特定生日的剩余天数
  • 我认为这个问题已经解决了http://stackoverflow.com/questions/15358210/how-to-make-another-array-containing-number-of-days-remain
  • 需要澄清要求,即您已经给出了一些日期,但这些日期需要与哪个日期进行比较?
  • 另外问题和代码完全不同。您需要生日剩余的天数。但是您的代码会计算从实际出生日期经过的天数。 (指 13/02/2013-20/08/1990 )

标签: iphone ios date calendar


【解决方案1】:

请尝试使用这个。我想这个可以帮助你。

NSDateFormatter *tempFormatter = [[NSDateFormatter alloc]init];
    [tempFormatter setDateFormat:@"dd/MM/yyyy"];

    NSString *str = [tempFormatter stringFromDate:@"yourStartDate"];
    NSDate *startdate = [tempFormatter dateFromString:str];

    str = [tempFormatter stringFromDate:@"yourEndDate"];
    NSDate *endDate = [tempFormatter dateFromString:str];

    int i = [startdate timeIntervalSince1970];
    int j = [toDate timeIntervalSince1970];

    double X = j-i;

    int days=(int)((double)X/(3600.0*24.00));

【讨论】:

  • 当我尝试打印 int 天数时,这就是我得到的单步执行,直到从没有行号信息的函数 objc_msgSend 退出。
  • 非常感谢你的风格回答我
  • 最欢迎你亲爱的...
【解决方案2】:

使用下面的代码比较两个日期以相同的格式传递两个日期

NSDateFormatter *dateformat = [[NSDateFormatter alloc]init];
[dateformat setDateFormat:@"dd/MM/yyyy"];
NSString *StrDate1 = [dateformat stringFromDate:[NSDate date]];
NSString *StrDate2 = [dateformat stringFromDate:date2];
NSDate *firstDate = [dateformat dateFromString:StrDate1];
NSDate *secondDate = [dateformat dateFromString:StrDate2];
NSTimeInterval lastDiff = [firstDate timeIntervalSinceNow];
NSTimeInterval todaysDiff = [secondDate timeIntervalSinceNow];
NSTimeInterval dateDiff = todaysDiff - lastDiff;
int day = dateDiff/(3600*24);

 // days are remaining

在 for 循环中使用它,您将控制剩余天数

【讨论】:

  • 当我尝试打印 int day 时,这就是我得到的单步执行,直到从没有行号信息的函数 objc_msgSend 退出。
  • 非常感谢我得到了您的回答
猜你喜欢
  • 2013-09-08
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 2010-11-13
相关资源
最近更新 更多