Как управлять повторяющимся событием для всех пользователей часового пояса для определенного местного дня?

Я пытаюсь разработать приложение для событий, зависящее от планировщика и календаря, для iOS. которые используют онлайн-базу данных (базу данных синтаксического анализа) для хранения сведений о событиях и пользователях.

Деталь:

  • Один пользователь создает события на определенный день (т. е. каждый понедельник в течение 5 недель с определенной даты) и приглашает других пользователей в события.

  • Событие будет активно только в определенные дни для всех пользователей, т. е. если день события понедельник, то событие активно только в понедельник для всех пользователей в понедельник (по местному времени).

Вопрос: как проверить, активно ли событие для пользователя по местному времени? desc : если день события — пятница (01.01.2016), то событие активно для всех пользователей только в пятницу (01.01.2016), т. е. местное время пользователя — пятница (01.01.2016), тогда событие активно для этого пользователь. то же самое для всех других пользователей.

Как сохранить это в базе данных сервера и уведомить пользователя о том, что событие активно на сегодняшний день? Я использую базу данных синтаксического анализа, и вся эта логика должна быть реализована в Parse с использованием облачного кода.

Редактировать: я пытался активировать событие в соответствии с часовым поясом UTC. В приведенном выше примере событие активируется 01.01.2016 00:00:00.000Z и закрывается 01.02.2016 00:00:00.000Z . Это справедливо для пользователя в формате UTC+00, но для пользователя в формате UTC+5:30 событие активируется 01.01.2016 в 05:30:00 и закрывается 01.02.2016 в 5:30:00. Но событие должно быть активным только с 01.01.2016 00:00:00 до 01.02.2016 00:00:00. Та же проблема для всех пользователей с разными часовыми поясами.


person Bhargav B. Bajani    schedule 31.12.2015    source источник
comment
Обязательно прочитайте Как хранить повторяющиеся даты с учетом перехода на летнее время   -  person Matt Johnson-Pint    schedule 31.12.2015


Ответы (1)


// Попробуйте и сравните с датой, приведенной ниже Когда измените часовой пояс, затем сделайте 01/01/2016 00:00:00 %@ для UTC, GMT и т. д......

  NSDateFormatter *formated = [[NSDateFormatter alloc] init];
  formated.dateFormat = @"dd/MM/yyyy HH:mm:ss zzz";
  NSDate *utc = [formated dateFromString:@"01/01/2016 00:00:00 UTC"];
  formated.timeZone = [NSTimeZone systemTimeZone];
  NSString *local = [formated stringFromDate:utc];
  NSLog(@"%@", local);



  NSDateFormatter *formated2 = [[NSDateFormatter alloc] init];
  formated2.dateFormat = @"dd/MM/yyyy HH:mm:ss zzz";
  NSDate *utc2 = [formated2 dateFromString:@"02/01/2016 00:00:00 UTC"];
  formated2.timeZone = [NSTimeZone systemTimeZone];
  NSString *local2 = [formated2 stringFromDate:utc2];
  NSLog(@"%@", local2);
person pradip kikani    schedule 01.01.2016
comment
так не пойдет. Вы просто конвертируете время UTC в местное время. - person arjavlad; 05.01.2016