我试图将今天的日期显示为3月26日,但是当我使用此代码时,它显示为“ 3月85日”。
let formatter = DateFormatter()
formatter.dateFormat = "MMMM DD"
let defaultTimeZoneStr = formatter.string(from: Date())
答案 0 :(得分:3)
问题是您使用了错误的日期格式。 D
用于“一年中的某天”。 “ {month}”的正确符号是小写的d
,这就是为什么您获得85
而不是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"