我的日期值日期:2013-06-07 18:30:00 +0000。我试图减去30分钟,但没有给出适当的时间。
我试过这个
NSTimeInterval secondsPerHour = 60*30;
NSDate *newDate = [date dateByAddingTimeInterval:-secondsPerHour];
答案 0 :(得分:7)
原因:negative
的{{1}}为unsigned int
。这应该有效:
positive number
编辑:替代使用NSDate *newDate = [date dateByAddingTimeInterval:-(NSTimeInterval)((u_int32_t)30*60)];
。
NSDateComponents
答案 1 :(得分:2)
你可以使用:
NSDate *minusOneHr = [[NSDate date] dateByAddingTimeInterval:-30*60];
答案 2 :(得分:1)
你可以尝试NSDateComponents,类似的东西:
NSDate* yourDate = [NSDate dateWithTimeIntervalSinceNow:0]; // your date, to substract 30 mins
NSDateComponents *dc = [[NSCalendar currentCalendar] components:(NSYearCalendarUnit| NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:yourDate];
[dc setMinute:[dc minute] - 30];
NSDate* date = [[NSCalendar currentCalendar] dateFromComponents:dc]; // 30 mins before now
或那:
NSDate* yourDate = [NSDate dateWithTimeIntervalSinceNow:0]; // your date, to substract 30 mins
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setMinute:-30];
NSDate* date = [[NSCalendar currentCalendar] dateByAddingComponents:components toDate:yourDate options:0]; // 30 mins before now
答案 3 :(得分:1)
在viewDidLoad中复制粘贴此代码并首先检查结果。
NSDate *today = [[NSDate alloc] init];
NSLog(@"Today %@", today);
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setMinute:-30]; // If you want to change Month,Year,Day,Hour etc. Just change the "setMinute" to setMonth,setYear,setDay,setHour
NSDate *dateComp = [gregorian dateByAddingComponents:offsetComponents toDate:today options:0];
NSLog(@"Desired Day %@", dateComp);
答案 4 :(得分:1)
在 Swift 5 中
let minus30Min = Date().addingTimeInterval(-30 * 60)
答案 5 :(得分:0)
let dateMinusThirtyMinutes = Date().subtract(30.minutes)