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”。
1条答案
按热度按时间js4nwp541#
RelativeDateTimeFormatter
类似乎不允许您控制它使用的单位。旧的类
DateComponentsFormatter
提供了更多的控制,但不像RelativeDateTimeFormatter
那样添加“ago”或“from now”这样的字符串。我刚刚创建了一个简单的函数,它将这些字符串附加到
DateComponentsFormatter
的输出中。https://stackoverflow.com/a/75565749/205185