swift - 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"
有任何想法吗?
解决方案
尝试这个 :
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
推荐阅读
- javascript - 使用 javascript for 循环处理异步数组
- android - 将 LiveDataTestUtil 与 Kotest 一起使用
- python - 为什么我的 Python 多处理结果没有附加到回调上?
- google-sheets - Googlesheet 中的 importxml 函数
- python - 使用 python 对 .csv 文件中的列求和
- javascript - 如何检查数组中的每个元素以查看它是否存在于另一个数组中,并将第一个数组中的元素替换为其他元素?
- networkx - 有没有办法限制networkx上游节点深度搜索
- c++ - 我无法为列表 C++ 中的对象赋值
- python - 将格式不正确的字符串转换为字典?
- javascript - JavaScript 变量值不继续