Вот быстрая и грязная реализация datediff
, как доказательство концепции для решения проблемы, представленной в вопросе. Он полагается на то, что вы можете получить истекшие миллисекунды между двумя датами, вычитая их, что приводит их к их примитивному значению числа (миллисекунды с начала 1970 года).
// new Date("dateString") is browser-dependent and discouraged, so we'll write
// a simple parse function for U.S. date format (which does no error checking)
function parseDate(str) {
var mdy = str.split('/');
return new Date(mdy[2], mdy[0]-1, mdy[1]);
}
function datediff(first, second) {
// Take the difference between the dates and divide by milliseconds per day.
// Round to nearest whole number to deal with DST.
return Math.round((second-first)/(1000*60*60*24));
}
alert(datediff(parseDate(first.value), parseDate(second.value)));
Вы должны знать, что «нормальные» API дат (без «UTC» в имени) работают в локальный часовой пояс браузера пользователя, поэтому в целом вы можете столкнуться с проблемами, если ваш пользователь находится в часовом поясе, которого вы не ожидаете, и вашему коду придется иметь дело с переходами на летнее время. Вы должны внимательно прочитать документацию для объекта Date и его методов и для чего-либо более сложного, настоятельно рекомендуем использовать библиотеку, которая предлагает более безопасные и мощные API для обработки дат.
Также, для иллюстрации, фрагмент использует именованный доступ к объекту window
для краткости, но в процессе производства вы должны использовать стандартизированные API, такие как getElementById или, более вероятно, некоторые рамки пользовательского интерфейса.
Вот один из способов сделать это
var index = 0
- (void)viewDidLoad {
// Do any additional setup after loading the view.
[super viewDidLoad];
[self scheduleDailyLocalNotification];
}
-(void)scheduleDailyLocalNotification{
UNMutableNotificationContent *localNotification = [UNMutableNotificationContent new];
localNotification.title = [NSString localizedUserNotificationStringForKey:@“Title!” arguments:nil];
srand(time(NULL));
localNotification.body = [NSString localizedUserNotificationStringForKey:[self.notificationMessages objectAtIndex:index] arguments:nil];
if index < self.notificationMessage.count{
index += 1
}else{
index = 0
}
localNotification.sound = [UNNotificationSound defaultSound];
UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:60 * 60 * 24 repeats:YES];
// UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"Time for a run!" content:localNotification trigger:trigger];
NSString *identifier = @"LOCALNOTIFICATION";
UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifier
content:localNotification trigger:trigger];
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
NSLog(@"NOTIFICATION CREATED");
}];
}
Если вы не хотите повторять это уведомление снова и снова, установите интервал повторов NO
UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:60 * 60 * 24 repeats:NO];