有没有办法检查NSDate对象是否在月份范围内而没有设置范围内的年份。例如,我有1956年2月2日的NSDate eqaual,我想知道该日期是否在任何一年的1月10日到2月10日之间。
提前谢谢!
答案 0 :(得分:1)
使用NSCalendar
和NSDateComponents
。
e.g。
// Assuming 'data' is a valid NSDate object
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSMonthCalendarUnit+NSDayCalendarUnit fromDate:date];
NSInteger day = components.day;
NSInteger month = components.month;
if ( (month>=startMonth && month<=endMonth) && (day>=startMonthDay && day<=endMonthDay)) {
// do your stuff
}
答案 1 :(得分:1)
您应该使用NSDate的-compare
消息,或使用-timeIntervalSince1970
NSDate *startRange;
NSDate *endRange;
// method one
if (([myDate compare:startRange] > 0) && ([myDate compare:endRange] < 0))
{
// execute code here
}
// method two
if (myDate.timeIntervalSince1970 > startRange.timeIntervalSince1970 &&
myDate.timeIntervalSince1970 < endRange.timeIntervalSince1970)
{
// execute code here
}
答案 2 :(得分:0)
您可以获取当前的NSCalendar实例并使用组件:forDate:方法,然后从生成的NSDateComponents对象中提取月份和日期组件。
答案 3 :(得分:0)
您可以将NSDateComponents用于此
NSDate *date = [NSDate date];
// setting units we would like to use in future
unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit;
// creating NSCalendar object
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
// extracting components from date
NSDateComponents *components = [calendar components:units fromDate:date];
if (components.month <= 2 && components.month >= 1) {
if (components.month == 2) {
if (components.day <= 10) {
// Date is in range
}
} else if (components.month == 2) {
if (components.day >= 10) {
// Date is in range
}
}