Imt*_*ath 1 nsdateformatter ios swift swiftui
在我的 SwiftUI 应用程序中,我显示的相对时间如下。
struct ContentView: View {
let date: Double = 1589014112
var body: some View {
Text(Date(timeIntervalSince1970: date).relativeTime())
}
}
extension Date {
func relativeTime(in locale: Locale = .current) -> String {
let formatter = RelativeDateTimeFormatter()
formatter.unitsStyle = .full
return formatter.localizedString(for: self, relativeTo: Date())
}
}
Run Code Online (Sandbox Code Playgroud)
我从 API 中获得了自 1970 年以来的时间间隔加倍。我想在我的应用中显示相对时间。输出如下。
视图仅在我重新加载时更新,并且每一秒都停留在“10 秒前”。如何实时更新?我想在当前日期 ( Date()) 更改时更改。
Ale*_*lex 10
let date: Double = 1589014112
var body: some View {
Text(Date(timeIntervalSince1970: date), style: .relative)
}
Run Code Online (Sandbox Code Playgroud)
可用性: iOS 14.0+、iPadOS 14.0+、macOS 11.0+、Mac Catalyst 14.0+、tvOS 14.0+、watchOS 7.0+。
注意:可用的styles 对于大多数用例来说应该足够了,但它们有些有限。请参阅Text.DateStyle。
您可以使用 TimerPublisher 定期触发某些内容。
下面是一个快速示例;
struct PlaygroundView: View {
let timer = Timer.publish(
every: 1, // second
on: .main,
in: .common
).autoconnect()
let date = Date()
@State var secondStr: String = ""
var body: some View {
Text(secondStr)
.onReceive(timer) { (_) in
self.secondStr = self.date.relativeTime()
}
}
}
extension Date {
func relativeTime(in locale: Locale = .current) -> String {
let formatter = RelativeDateTimeFormatter()
formatter.unitsStyle = .full
return formatter.localizedString(for: self, relativeTo: Date())
}
}
Run Code Online (Sandbox Code Playgroud)
您可以观察到secondStr每秒发生的变化,例如
1 秒前、
2 秒前
等等。
| 归档时间: |
|
| 查看次数: |
1259 次 |
| 最近记录: |