Чтобы получить время в строковом представлении в соответствии с языковым стандартом пользователя, вы можете использовать:
let formatter = DateFormatter()
formatter.timeStyle = DateFormatter.Style.short //Or in short formatter.timeStyle = .short
let time = formatter.string(from: Date())
Например, оно возвращает вам 23:47 для России и 23:47 для США.
Затем мы можем проверить, возвращен ли формат времени с частью дня для локали пользователя.Если это так, мы устанавливаем другой шрифт для двух последних символов в строке, что является нашей дневной частью.
if let range = time.range(of: formatter.amSymbol) ?? time.range(of: formatter.pmSymbol) {
let fontSize: CGFloat = 8.0
let nsRange = NSRange(range, in: time)
let attrString = NSMutableAttributedString(string: time)
attrString.addAttributes([.font: UIFont.systemFont(ofSize: fontSize)], range: nsRange)
label.attributedText = attrString
} else {
label.text = time
}