如何在iphone中找出当前年份是不是闰年[重复]
Posted
技术标签:
【中文标题】如何在iphone中找出当前年份是不是闰年[重复]【英文标题】:How to find out whether current year leap year or not in iphone [duplicate]如何在iphone中找出当前年份是否闰年[重复] 【发布时间】:2013-05-29 08:44:21 【问题描述】:如何从 NSDate
获取当前年份以及如何在 Objective-C 中找出该年份是否是闰年?
【问题讨论】:
使用NSDateComponent
提取年份,如果余数除以4为0则为闰年。
@iNoob:这是不正确的。 1900 年在公历中不是闰年。在其他日历中可能会完全不同。
@MartinR,抱歉不知道,但NSDateComponents
为NSCalendar
取一个值不会有帮助吗?
模拟问题有一个很好的答案:***.com/a/2078633/309925
总有谷歌来帮你
【参考方案1】:
您可以执行以下操作:
- (BOOL)isYearLeapYear:(NSDate *) aDate
NSInteger year = [self yearFromDate:aDate];
return (( year%100 != 0) && (year%4 == 0)) || year%400 == 0;
- (NSInteger)yearFromDate:(NSDate *)aDate
NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"yyyy";
NSInteger year = [[dateFormatter stringFromDate:aDate] integerValue];
return year;
【讨论】:
严格来说,这仅对公历日历有效(但对于 OP 来说可能就足够了)。 从 ios 6 开始,NSDateComponents 中存在一个leapMonth 属性。虽然我无法让它工作:(除了自制公式之外,通过 Cocoa 实现它的一种方法是计算一年中的天数,或二月的月份。【参考方案2】:***:
if year is divisible by 400 then
is_leap_year
else if year is divisible by 100 then
not_leap_year
else if year is divisible by 4 then
is_leap_year
else
not_leap_year
【讨论】:
【参考方案3】:首先你需要使用 NSDateComponant 找到年份,如果你得到年份除以 4,那么这是闰年。
【讨论】:
也有同样的评论..!所以请检查它 这还不够(可被四整除)。请参阅菲利普的回答。【参考方案4】: NSDate *date = [NSDate date];
NSLog(@"dat eis %@",date);
NSDateFormatter *dateF = [[NSDateFormatter alloc]init];
[dateF setDateFormat:@"YYYY"];
NSString *dateS = [dateF stringFromDate:date ];
NSLog(@"date is %@",dateS);
int myInt = [dateS intValue];
if(myInt%4== 0)
NSLog(@"Its a leap year ");
else
NSLog(@"Not A leap year");
【讨论】:
以上是关于如何在iphone中找出当前年份是不是闰年[重复]的主要内容,如果未能解决你的问题,请参考以下文章