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

时间:2019-03-27 02:38:08

标签: swift date time formatter

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

let formatter = DateFormatter()
formatter.dateFormat = "MMMM DD"
let defaultTimeZoneStr = formatter.string(from: Date())

1 个答案:

答案 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"