如何在iphone中检索给定月份的最后一个日期作为参数

Posted

技术标签:

【中文标题】如何在iphone中检索给定月份的最后一个日期作为参数【英文标题】:How to retrive Last date of month give month as parameter in iphone 【发布时间】:2012-05-20 06:45:40 【问题描述】:

我想在 iphone 应用程序中检索给定月份的最后日期。谁能告诉我如何实现这一目标?我在 *** 上看到了一些解决方案,但他们只是给出了一个月的最后一天。

谢谢。

更新:

    +(NSString*)getLastDateOfMonth:(NSString *)monthYearString 

    //NSString *inputDate = [NSString stringWithFormat:@"%@ %@",@"01",monthYearString];
    NSString *inputDate = [NSString stringWithFormat:@"%@ %@",@"01",@"May 2012"];
    NSLog(@"Input date:- %@",inputDate);

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"dd MMM yyyy"];
    NSDate *date = [dateFormatter dateFromString:inputDate];

    NSCalendar *gregCalendar=[[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];

    NSDateComponents *components=[gregCalendar components:NSMonthCalendarUnit|NSYearCalendarUnit fromDate:date];
    NSInteger month=[components month];
    NSInteger year=[components year];

    if (month==12) 
        [components setYear:year+1];
        [components setMonth:1];
    
    else 
        [components setMonth:month+1];
    
    [components setDay:1];

    NSDate *lastDate = [[gregCalendar dateFromComponents:components] dateByAddingTimeInterval:0];

    NSDateFormatter *outputFormatter = [[NSDateFormatter alloc]init];
    [outputFormatter setDateFormat:@"MM/dd/yyyy"];
    NSString *lastDateOfMonth = [outputFormatter stringFromDate:lastDate];

    return lastDateOfMonth;


如果我使用此代码,它会在控制台中显示错误输出,如下所示

    Input date:- 01 May 2012
LAst DAte in Month:- 06/01/2012

【问题讨论】:

【参考方案1】:

你可以使用这个函数来做到这一点:-

 NSDate currDate=[NSDate date];

NSDate *getLastDateMonth(NSDate *currDate)


    NSCalendar *gregCalendar=[[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];

    NSDateComponents *components=[gregCalendar components:NSMonthCalendarUnit|NSYearCalendarUnit fromDate:currDate];
    NSInteger month=[components month];
    NSInteger year=[components year];

    if (month==12) 
        [components setYear:year+1];
        [components setMonth:1];
    
    else 
        [components setMonth:month+1];
    
    [components setDay:1];

    return [[gregCalendar dateFromComponents:components] dateByAddingTimeInterval:0];
    

【讨论】:

如果我使用上述功能,我会得到错误的日期。我这样调用这个函数 NSLog(@"LAst DAte in Month:- %@",[Common getLastDateOfMonth:[NSDate date]]);我控制台中的输出是“LAst DAte in Month:- 2012-05-30 18 :30:00 +0000" 从返回中删除 -86400 并添加 0 感谢您的回答。但是,如果我使用我的更新中的代码(请参阅我的问题的更新),那么它会向我显示错误的结果。你能帮帮我吗。提前致谢。 如果你必须得到字符串,你将不得不使用 -86400 而不是 0,因为它增加了 1

以上是关于如何在iphone中检索给定月份的最后一个日期作为参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在sql中从给定的月份和年份获取月份的第一天和最后一天

如何从给定日期获得一个月的整数并打印为月份名称格式(“MMM”)

如何从日期找到一个月的最后一天?

在php中获取给定月份和年份的开始和结束unix时间戳

检索日期中给定年份的所有 ORM 记录

如何使用查询获取两个给定日期之间的月份列表?