我试图将今天的日期显示为3月26日,但是当我使用此代码时它显示为“3月85日”。
let formatter = DateFormatter()
formatter.dateFormat = "MMMM DD"
let defaultTimeZoneStr = formatter.string(from: Date())
问题是您使用的日期格式错误。 D
是“一年中的一天”。 “月份日”的正确符号是较低的d
这就是为什么你得到85
instead 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"