使用格式 "DD" 时,日期格式化程序未显示正确的日期
Date Formatter isn't showing correct day of the month when using format "DD"
我试图将今天的日期显示为 3 月 26 日,但当我使用此代码时它显示为 "March 85"。
let formatter = DateFormatter()
formatter.dateFormat = "MMMM DD"
let defaultTimeZoneStr = formatter.string(from: Date())
问题是您使用了错误的日期格式。 D
用于 "day of year"。 "day of 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"
我试图将今天的日期显示为 3 月 26 日,但当我使用此代码时它显示为 "March 85"。
let formatter = DateFormatter()
formatter.dateFormat = "MMMM DD"
let defaultTimeZoneStr = formatter.string(from: Date())
问题是您使用了错误的日期格式。 D
用于 "day of year"。 "day of 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"