NSDateComponents :查找超过 30 天的时间
NSDateComponents : Find older than 30 days
使用 NSDateComponents
我想将出发日期与现在进行比较,以查看出发日期是否 > 30 天。
我使用 NSDateComponents
功能,但在调试它时,它总是像一个非常大的数字,而我预计它是 3 天、15 天或其他什么。
NSDate* now = [NSDate date];
NSUInteger unitFlags = NSDayCalendarUnit;
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:unitFlags fromDate:departureDate toDate:now options:0];
NSInteger age = [components day]+1;
当我尝试记录年龄时
NSLog(@"age (in days) = %lu", (long) age);
它 returns 一个非常长的数字,例如 18446744073709551613
我想做一个 if 语句说;
if (age > 30)
但是当返回的年龄是一个像这样的长数字时,我不确定如何做到这一点。
非常感谢
NSDate * dateNotFormatted = [NSDate date];
double now = [dateNotFormatted timeIntervalSince1970];
NSLog(@"%f",now);
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate * dateDepareture =[dateFormatter dateFromString:@"29-06-2015"];
double dateDept = [dateDepareture timeIntervalSince1970];
NSLog(@"%f",dateDept);
检查 30 天的双精度值...
或
NSDateComponents *components;
NSInteger days;
components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay fromDate:[NSDate date] toDate:[dateFormatter dateFromString:@"2-07-2015"] options:0];
days = [components day];
NSLog(@"%ld",(long)days);
将代码更改为您需要检查 30 天...
NSDayCalendarUnit NS_CALENDAR_ENUM_DEPRECATED(10_4, 10_10, 2_0, 8_0,
"Use NSCalendarUnitDay instead") = NSCalendarUnitDay
NSDate* date30 = [NSDate date];
date30 = [date dateByAddingInterval:86400*30];
if([departureDate compare:date30] == NSOrderedDescending){
//Departure > Today + 30d
}
else
{
//Departure < Today + 30d
}
是你需要的吗?
使用 NSDateComponents
我想将出发日期与现在进行比较,以查看出发日期是否 > 30 天。
我使用 NSDateComponents
功能,但在调试它时,它总是像一个非常大的数字,而我预计它是 3 天、15 天或其他什么。
NSDate* now = [NSDate date];
NSUInteger unitFlags = NSDayCalendarUnit;
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:unitFlags fromDate:departureDate toDate:now options:0];
NSInteger age = [components day]+1;
当我尝试记录年龄时
NSLog(@"age (in days) = %lu", (long) age);
它 returns 一个非常长的数字,例如 18446744073709551613
我想做一个 if 语句说;
if (age > 30)
但是当返回的年龄是一个像这样的长数字时,我不确定如何做到这一点。
非常感谢
NSDate * dateNotFormatted = [NSDate date];
double now = [dateNotFormatted timeIntervalSince1970];
NSLog(@"%f",now);
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate * dateDepareture =[dateFormatter dateFromString:@"29-06-2015"];
double dateDept = [dateDepareture timeIntervalSince1970];
NSLog(@"%f",dateDept);
检查 30 天的双精度值...
或
NSDateComponents *components;
NSInteger days;
components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay fromDate:[NSDate date] toDate:[dateFormatter dateFromString:@"2-07-2015"] options:0];
days = [components day];
NSLog(@"%ld",(long)days);
将代码更改为您需要检查 30 天...
NSDayCalendarUnit NS_CALENDAR_ENUM_DEPRECATED(10_4, 10_10, 2_0, 8_0, "Use NSCalendarUnitDay instead") = NSCalendarUnitDay
NSDate* date30 = [NSDate date];
date30 = [date dateByAddingInterval:86400*30];
if([departureDate compare:date30] == NSOrderedDescending){
//Departure > Today + 30d
}
else
{
//Departure < Today + 30d
}
是你需要的吗?