如何在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中检索给定月份的最后一个日期作为参数的主要内容,如果未能解决你的问题,请参考以下文章