Excel по математике в Swift - PullRequest
       2

Excel по математике в Swift

0 голосов
/ 09 декабря 2018

Пытался преобразовать эту формулу Excel в Swift, но даже не уверен, с чего начать

=((((INT(MOD(((((A2-7-"23/03/2008")/7)+1)),52)))))+1)

A2 - это дата в формате DD / MM / YYYY

Есть идеи?

РЕДАКТИРОВАТЬ: извините, вот математика, которую я пытаюсь сделать:

Step 1 = Convert todays date to a Int (todayDate)
Step 2 = Convert "23/03/2018" to an Int (baseDate)
Step 3 = todayDate - 7 days
Step 4 = todayDate - baseDate
Step 5 = todayDate / 7
Step 6 = todayDate + 1 day
Step 7 = Mod(todayDate),52
Step 8 = todayDate + 1 day

Это должно генерировать номер недели на основе (например, сегодня = неделя 40

Извините,я впервые здесь пишу, не знаю, сколько деталей дать.


При использовании этого кода я получаю «Тип выражения неоднозначен без контекста»

Работы:

let todayDate = Date()

Неудачи:

let todayDate = "01/01/2018"

Есть идеи?

1 Ответ

0 голосов
/ 09 декабря 2018

Попробуйте:

let todayDate = Date()

let baseDateString = "23/03/2018"

let formatter = DateFormatter()

formatter.dateFormat = "dd/MM/yyyy"

guard let baseDate = formatter.date(from: baseDateString) else {
    fatalError("Wrong date")
}

let calendar = Calendar.current

let dateComponents = calendar.dateComponents([.day], from: baseDate, to: todayDate)

let dayCount = (dateComponents.day ?? 0) - 7

let adjustedDayCount = (dayCount / 7) + 1

let weeksFromBaseDate = (adjustedDayCount % 52) + 1

weeksFromBaseDate равно 38.

Пояснение

  • "23/03/2018" в пятницу на 12-й неделе года.
  • "09/12/2018" в воскресенье в49-я неделя в году.

Это означает, что сегодня это 49 - 12 + 1 th = 38 неделя с базовой даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...