如何在 swiftUI 中的文本上显示 AM/PM?

问题描述

我插入了一个计时器,所以时间会根据系统时钟而变化。问题是,它以数字显示而没有像上午/下午一样(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 上设置 pmSymbolDateFormatter 并使用 a 符号打印它。

lazy var timeFormat: DateFormatter {
        let formatter = DateFormatter()
        formatter.dateFormat = "h:mm a"
        formatter.amSymbol = "AM"
        formatter.pmSymbol = "PM"
        return formatter
}()

在我的语言环境(美国)中,即使没有设置 amSymbolpmSymbol,它们也会显示为“AM”/“PM”,但我不确定在所有语言环境中都是如此。

>