Domanda

Voglio recuperare l'ultima data del mese specificato nell'app per iPhone.Qualcuno può dire come posso ottenere questo?Ho visto qualche soluzione su Stackoverflow, ma danno solo l'ultimo giorno del mese.

Grazie.

Aggiornamento:

    +(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;

}
.

Se utilizzo questo codice che mi mostra l'output errato in console come segue

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

È stato utile?

Soluzione

Puoi farlo usando questa funzione: -

 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];
    }
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top