如何在 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上设置amSymbolpmSymbol,然后使用a符号打印。

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

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