swift 我可以使用RelativeDateTimeFormatter(或其他一些类)来创建具有多个单位的相对日期吗?

pod7payv  于 2023-02-28  发布在  Swift
关注(0)|答案(1)|浏览(132)

Apple的Foundation框架有RelativeDateTimeFormatter类,它允许你描述相对于当前时间的时间间隔,它会生成类似于“两天前”的字符串。
是否可以使用RelativeDateTimeFormatter或其他基础类生成类似于“两天七小时二十七分钟前”的字符串(理想情况下,可以控制使用哪些单位?
(The下面的代码生成字符串“yesterday”。)

import Foundation

let formatter = RelativeDateTimeFormatter()
formatter.dateTimeStyle = .named
formatter.unitsStyle = .full

let outputString = formatter.localizedString(fromTimeInterval: -123456.789)

print(outputString)

你可能认为使用localizedString(from:)形式就可以了(那个版本接受一个DateComponents对象),但你错了,它创建了一个类似的、单一单位的比较:

let components = DateComponents(day: 2, hour: 3, minute: 7)
let outputString = formatter.localizedString(from: components)

该代码创建字符串“in 2 days”。

js4nwp54

js4nwp541#

RelativeDateTimeFormatter类似乎不允许您控制它使用的单位。
旧的类DateComponentsFormatter提供了更多的控制,但不像RelativeDateTimeFormatter那样添加“ago”或“from now”这样的字符串。
我刚刚创建了一个简单的函数,它将这些字符串附加到DateComponentsFormatter的输出中。
https://stackoverflow.com/a/75565749/205185

相关问题