首页 > 解决方案 > Excel 数学到 Swift

问题描述

一直试图将这个 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"

有任何想法吗?

标签: swiftexcel

解决方案


尝试这个 :

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 = th 周。38


推荐阅读