DateComponentsFormatter返回错误的单位数

Tim*_*ich 12 ios nsdatecomponentsformatter

我遇到了问题,当DateComponentsFormatter返回意外的单位数时.有人遇到过同样的问题吗?

import Foundation

let formatter = DateComponentsFormatter()
formatter.unitsStyle = .full;
formatter.maximumUnitCount = 1;

let date = Date(timeIntervalSinceNow: -14.7 * 24 * 60 * 60)
let dateString = formatter.string(from: date, to: Date()) // 2 weeks 1 day
Run Code Online (Sandbox Code Playgroud)

我希望收到"2周",但有"2周1天".

Apu*_*urv 1

您将传递 -14.7,四舍五入为 -15。所以你有 2 周零 1 天的时间。因此,请正确舍入数字以获得预期结果。

  • 我已经设置了“maximumUnitCount” - 格式化程序不应返回超过一个单位。 (5认同)
  • 奇怪的。一旦你使它小于-14.5,它就只显示一个单位。如果您从 -15 开始,那么它也仅显示 1 个单位。在 -14.5 到 -14.99 之间的某个位置,它会失败。任何新的一周开始时都会观察到同样的情况。我的意思是 -21、-28 等等.. (2认同)