如何借助 NSDateFormatter 从 NSDate 中减去时间?

How to subtract time from NSDate with the help of NSDateFormatter?

我正在开发一个应用程序,用户可以在其中设置执行任务的时间,并在 10 或 15 分钟之前应用程序触发警报。就像你可以说的提醒应用程序。

在 Whosebug 和其他不同的链接上搜索了很多之后,我的问题仍然存在。这是我正在做的事情:

-(void)timeWasSelected:(NSDate *)selectedTime element:(id)element {

    if((UITextField *)element == self.timeForTask){
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"hh:mm a"];
        self.textField.text = [dateFormatter stringFromDate:selectedTime];
        [defaults setObject:self.textField.text forKey:@"taskTime"];
        myTime = [selectedTime dateByAddingTimeInterval:-600];
        NSLog(@"New Time %@",myTime);
    }

执行此操作后,NSLog 部分给出以下输出:New Time 2015-04-27 06:14:14 +0000

问题是我选择了时间 11:22AM 并且它正在存储 06:14 而我只从所选时间中扣除了 10min

// 给出时间早 15 分钟的新日期对象

 NSDate *newDate = [oldDate dateByAddingTimeInterval:-60*15]; 
   NSString* NewTime = [dateFormatter stringFromDate:newDate];
    NSLog(@"New Time %@",newDate);

此代码将使您提前 15 分钟到达

试试这个,可能对你有帮助,

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh:mm a"];
NSLog(@"1New Time %@",[dateFormatter stringFromDate:selectedTime]);
self.textField.text = [dateFormatter stringFromDate:selectedTime];
[defaults setObject:self.textField.text forKey:@"taskTime"];
NSTimeZone *destinationTimeZone = [NSTimeZone systemTimeZone];
[dateFormatter setTimeZone:destinationTimeZone];
NSDate *myTime = [selectedTime dateByAddingTimeInterval:-600];
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setTimeZone:destinationTimeZone];
[dateFormatter1 setDateFormat:@"yyyy-MM-dd hh:mm:ss ZZ"];
NSLog(@"2New Time %@",[dateFormatter1 stringFromDate:myTime]);

享受编码!!

试试这个你会得到输出:

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"hh:mm a"];
    NSDate* selectedTime = [dateFormatter dateFromString:@"11:22 AM"];
   NSDate* myTime = [selectedTime dateByAddingTimeInterval:-60*10];//10 minute deduction
    NSString* updateTime = [dateFormatter stringFromDate:myTime];
    NSLog(@"New Time %@",updateTime);

输出:

新时间11:12上午

此处您要从所选时间中减去 10 分钟。如果您想要 15 分钟,则替换为 10 位数字。

希望对您有所帮助。