gpt4 book ai didi

swift - 从特定日期 Swift 获取更大日期单位的最简单方法

转载 作者:行者123 更新时间:2023-11-28 12:17:17 25 4
gpt4 key购买 nike

我有 2 个日期示例,一个比另一个新。我需要输出像“15 分钟前、10 小时前、2 天前、7 周前、2 年前”这样的字符串。因此,我需要以某种方式确定最大的数据单位(小时、分钟、月、年),然后计算该单位的数量。

有没有一种简单的方法可以在不使用太多 if 和比较 2 个 NSDate 的秒数的情况下做到这一点?

谢谢。

最佳答案

听起来像 DateComponentsFormatter 可能是您正在寻找的。

我以这两个日期为例

let earlier = // 29 Sep 2017, 04:36 
let later = // 2 Oct 2017, 10:04

创建组件格式化程序并在这两个日期之间格式化组件(无需任何进一步配置)会产生以下结果:

let componentFormatter = DateComponentsFormatter()
componentFormatter.string(from: earlier, to: later)
// "3d 5:28:07"

如果像您的问题一样,您希望格式化字符串使用完整的单位名称,您可以配置 unitStyle格式化程序的:

componentFormatter.unitsStyle = .full
// "3 days, 5 hours, 28 minutes, 7 seconds"

如果希望格式化字符串只包含大单位,可以配置maximumUnitCount格式化程序的:

componentFormatter.maximumUnitCount = 1
// "3 days"

根据您要向用户传达的准确度,您可能希望表明这个单一单位是一个近似值。您可以通过启用 includesApproximationPhrase 来做到这一点在格式化程序上:

componentFormatter.includesApproximationPhrase = true
// "About 3 days"

关于swift - 从特定日期 Swift 获取更大日期单位的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46032204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com