使用格式“DD”时,日期格式化程序未显示当月的正确日期

问题描述 投票:-3回答:1

我试图将今天的日期显示为3月26日,但是当我使用此代码时它显示为“3月85日”。

let formatter = DateFormatter()
formatter.dateFormat = "MMMM DD"
let defaultTimeZoneStr = formatter.string(from: Date())
swift date time formatter
1个回答
3
投票

问题是您使用的日期格式错误。 D是“一年中的一天”。 “月份日”的正确符号是较低的d这就是为什么你得到85instead 26

如果您不希望日期字符串反映用户设置和区域设置,则应考虑的另一点是将区域设置固定为"en_US_POSIX"

请注意,您应该使用Swift本机类型Date而不是NSDate

如果您打算根据用户区域设置和设置显示它,您应该使用日期格式化程序dateStyle(短,中,长或完整)How do I get the current Date in short format in Swift

如果您需要仅限于月和日的本地化日期格式,则可以使用模板中的DateFormatter方法dateFormat:

class func dateFormat(fromTemplate tmplate: String, options opts: Int, locale: Locale?) -> String?


let df = DateFormatter()
df.dateFormat = DateFormatter.dateFormat(fromTemplate: "MMMMdd", options: 0, locale: .current)
df.string(from: Date())  // "March 27"
© www.soinside.com 2019 - 2024. All rights reserved.