gpt4 book ai didi

ios - 如何快速格式化用户显示(如社交网络)的时间间隔?

转载 作者:IT王子 更新时间:2023-10-29 05:19:58 25 4
gpt4 key购买 nike

我有一个时间间隔,比如 12600,相当于 3 小时 30 分钟。我如何格式化任何此类时间间隔,以便仅保留间隔的最高部分(例如,在本例中为小时数)并将正确的区域设置缩写附加到数字。例如 10m(10 分钟)、3d(3 天)、1y(1 年)。


编辑:这里有一些例子:

Time interval in: 90000    Whole string: 1d      String out: 1dTime interval in: 900      Whole string: 15m     String out: 15mTime interval in: 13500    Whole String: 3h 45m  String out: 4h

作为一般规则,应用正常的舍入规则(向下舍入 3.4,向上舍入 3.6)。

最佳答案

如果您的目标是较新的操作系统版本(iOS 13.5+、OS X 10.15+),您可以使用 RelativeDateTimeFormatter :

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

for d in [-12600.0, -90000.0, -900.0, 13500.0] {
let str = formatter.localizedString(fromTimeInterval: d)
print("\(d): \(str)")
}

// Output
-12600.0: 3 hours ago
-90000.0: yesterday
-900.0: 15 minutes ago
13500.0: in 3 hours

对于较旧的操作系统版本,请使用 DateComponentFormatter , 自 iOS 8 起可用:

func format(duration: TimeInterval) -> String {
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.day, .hour, .minute, .second]
formatter.unitsStyle = .abbreviated
formatter.maximumUnitCount = 1

return formatter.string(from: duration)!
}

for d in [12600.0, 90000.0, 900.0, 13500.0] {
let str = format(duration: d)
print("\(d): \(str)")
}

这打印:

12600.0: 4h
90000.0: 1d
900.0: 15m
13500.0: 4h

关于ios - 如何快速格式化用户显示(如社交网络)的时间间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35999022/

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