如何在 swiftUI 中的文本上显示 AM/PM?
How to display AM/PM on text in swiftUI?
我插入了一个定时器,所以时间会根据系统时钟而变化。问题是,它以没有 am/pm like(12:33) 的数字显示。请指导我解决这个问题。
这是我用来显示文本的代码。
@State var endTime = Date()
var body: some View {
Text("Ends - \(myViewModel.timeString(date: endTime))")
.onAppear(perform: {let _ = self.updatedEndTime})
}
这是我用来根据系统时间更新计时器的代码。
var updateEndTime: Timer {
Timer.scheduledTimer(withTimeInterval: 0, repeats: true,
block: {_ in
self.endTime = Date() + myViewModel.player.duration - myViewModel.player.currentTime
})
}
我的视图模型代码
var timeFormat: DateFormatter {
let formatter = DateFormatter()
formatter.dateFormat = "hh:mm"
return formatter
}
func timeString(date: Date) -> String {
let time = timeFormat.string(from: date)
return time
}
您可以在DateFormatter
上设置amSymbol
和pmSymbol
,然后使用a
符号打印。
lazy var timeFormat: DateFormatter {
let formatter = DateFormatter()
formatter.dateFormat = "h:mm a"
formatter.amSymbol = "AM"
formatter.pmSymbol = "PM"
return formatter
}()
在我的语言环境(美国)中,即使没有设置 amSymbol
和 pmSymbol
,它们也会显示为“AM”/“PM”,但我不确定在所有语言环境中都是如此。
我插入了一个定时器,所以时间会根据系统时钟而变化。问题是,它以没有 am/pm like(12:33) 的数字显示。请指导我解决这个问题。
这是我用来显示文本的代码。
@State var endTime = Date()
var body: some View {
Text("Ends - \(myViewModel.timeString(date: endTime))")
.onAppear(perform: {let _ = self.updatedEndTime})
}
这是我用来根据系统时间更新计时器的代码。
var updateEndTime: Timer {
Timer.scheduledTimer(withTimeInterval: 0, repeats: true,
block: {_ in
self.endTime = Date() + myViewModel.player.duration - myViewModel.player.currentTime
})
}
我的视图模型代码
var timeFormat: DateFormatter {
let formatter = DateFormatter()
formatter.dateFormat = "hh:mm"
return formatter
}
func timeString(date: Date) -> String {
let time = timeFormat.string(from: date)
return time
}
您可以在DateFormatter
上设置amSymbol
和pmSymbol
,然后使用a
符号打印。
lazy var timeFormat: DateFormatter {
let formatter = DateFormatter()
formatter.dateFormat = "h:mm a"
formatter.amSymbol = "AM"
formatter.pmSymbol = "PM"
return formatter
}()
在我的语言环境(美国)中,即使没有设置 amSymbol
和 pmSymbol
,它们也会显示为“AM”/“PM”,但我不确定在所有语言环境中都是如此。