gpt4 book ai didi

swift - 如何只取当前时间 (hh :mm:ss format) from Date() in Swift?

转载 作者:行者123 更新时间:2023-12-05 09:32:43 24 4
gpt4 key购买 nike

var currentDT = Date()

print(currentDT)

这会打印出比我现在需要的更多的信息。我怎样才能从中获取时间 (hh:mm:ss) 或日期 (dd-mm-yy)?这感觉像是一个愚蠢的问题。但我找不到任何关于此的好文档。

最佳答案

您正在直接打印 Date 对象,它使用预定的 description 算法来显示日期。

但是不应该尝试从中解析字符串。而是使用 DateFormatter 来构建您的日期/时间字符串。因此,您可能有一个用于日期的日期格式化程序和另一个用于时间的日期格式化程序:

let dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .short
return formatter
}()

let timeFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.timeStyle = .medium
return formatter
}()

请注意,我建议不要使用硬编码日期格式字符串并设置格式化程序的 dateFormat 字符串,而是使用这些“样式”属性来指示您想要的字符串类型,同时仍然遵守用户的偏好(例如,01-02-21 在美国将被解释为 1 月 2 日,但在许多其他地区将被解释为 2 月 1 日)。

无论如何,既然您拥有了这些格式化程序属性,就可以在您的代码中使用它们了。例如,假设您将其标记为 ,您可以将 Textformatter 一起使用:

var body: some View {
VStack {
Text("Date: \(date, formatter: dateFormatter)")
Text("Time: \(date, formatter: timeFormatter)")
}
}

或者,您可以使用DateFormatter 方法string(from:) 手动获取字符串:

let string = dateFormatter.string(from: date)
print(string) // 5/30/21 in the US; 30/5/21 in many other locales

另一方面,如果此字符串不用于在 UI 中显示,并且您确实需要固定的字符串格式(例如,您将日期字符串写入持久存储或将其包含在某些 Web 请求中),则可以改为使用ISO8601DateFormatter(生成 ISO8601/RFC3339 日期字符串,格式固定,默认为 GMT/Zulu),例如:

let formatter = ISO8601DateFormatter()
let string = formatter.string(from: date)
print(string) // 2021-05-30T17:27:45Z

关于swift - 如何只取当前时间 (hh :mm:ss format) from Date() in Swift?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67763537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com