gpt4 book ai didi

ios - 在 Objective-C 中将 unix 时间(作为 NSString)转换为 "X Hours ago"

转载 作者:行者123 更新时间:2023-11-29 01:13:23 25 4
gpt4 key购买 nike

我从 API 获取数据,该 API 以字符串形式接收数据。

我有 NSString 类型变量名称 timeAgo ,它表示以秒为单位的 UNIX 时间(例如:1455893366)。我的目标是将其更改为“X 分钟/小时/天前”格式。

我找不到有用的东西,而且我不想改变我的 API 来做到这一点(嗯,我正在学习 Objective-C 和 iOS..)。

谁能帮我解决这个问题吗?

我一直在尝试:int Interval = (int) ([[NSDate date] timeIntervalSinceDate:update.timeAgo]/3600);但出现以下错误:不兼容的指针类型将“NSString *”发送到“NSDate * _Nonnull”类型的参数

最佳答案

首先,将字符串转换为数字,如下所示:

let timestamp = NSTimeInterval(timeAgo)

然后,您可以使用这样的函数将其格式化为相对字符串:

var currentUnixTime: NSTimeInterval { return CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970 }

func relativeStringForUnixTime(time: NSTimeInterval) -> String {
struct Static {
static var once: dispatch_once_t = 0
static var formatter: NSDateComponentsFormatter!
}
dispatch_once(&Static.once) {
Static.formatter = NSDateComponentsFormatter()
Static.formatter.allowedUnits = [ .Day, .Hour, .Minute, .Second ]
Static.formatter.maximumUnitCount = 1
Static.formatter.unitsStyle = .Full
}

let offset = currentUnixTime - time
if offset > 0 {
return Static.formatter.stringFromTimeInterval(offset)! + " ago"
} else {
return Static.formatter.stringFromTimeInterval(-offset)! + " from now"
}
}

relativeStringForUnixTime(currentUnixTime) // "0 seconds ago"
relativeStringForUnixTime(currentUnixTime - 10) // "10 seconds ago"
relativeStringForUnixTime(currentUnixTime - 100) // "2 minutes ago"
relativeStringForUnixTime(currentUnixTime - 1000) // "17 minutes ago"
relativeStringForUnixTime(currentUnixTime - 10000) // "3 hours ago"
relativeStringForUnixTime(currentUnixTime - 100000) // "1 day ago"

relativeStringForUnixTime(currentUnixTime + 10) // "9 seconds from now"
relativeStringForUnixTime(currentUnixTime + 100) // "2 minutes from now"
relativeStringForUnixTime(currentUnixTime + 1000) // "17 minutes from now"
relativeStringForUnixTime(currentUnixTime + 10000) // "3 hours from now"
relativeStringForUnixTime(currentUnixTime + 100000) // "1 day from now"

关于ios - 在 Objective-C 中将 unix 时间(作为 NSString)转换为 "X Hours ago",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35508115/

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