如何借助 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 位数字。
希望对您有所帮助。
我正在开发一个应用程序,用户可以在其中设置执行任务的时间,并在 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 位数字。
希望对您有所帮助。