问题描述
我插入了一个计时器,所以时间会根据系统时钟而变化。问题是,它以数字显示而没有像上午/下午一样(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
}
解决方法
您可以在 amSymbol
上设置 pmSymbol
和 DateFormatter
并使用 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”,但我不确定在所有语言环境中都是如此。