我在操场上有下面的代码,应用程序和DateFormatter只返回“1990-10-21”日期的零:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYY-MM-dd"
let date1 = dateFormatter.date(from: "1990-10-20") // "Oct 20, 1990 at 12:00 AM"
let date2 = dateFormatter.date(from: "1990-10-21") // nil
let date3 = dateFormatter.date(from: "1990-10-22") // "Oct 22, 1990 at 12:00 AM"用1989,2021年的测试..。效果很好..。
有没有人知道为什么或者怎么回事?是虫子吗?
发布于 2021-09-16 21:43:22
您的代码有三个问题。第一个YYYY是YearForWeekOfYear。你需要的是yyyy。第二,你不是在浪费时间。注意,并非所有的日子都是从12:00am (夏令储蓄过渡日期)开始的。您可以通过设置日期格式化程序的日历或将有效时间(12 or )与日期一起传递,从而防止日期格式化程序返回nil。第三,在使用固定日期格式时,应该始终将区域设置为"en_US_POSIX":
let dateFormatter = DateFormatter()
dateFormatter.calendar = .current
dateFormatter.locale = .init(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd"
let date1 = dateFormatter.date(from: "1990-10-20") // "Oct 20, 1990 at 12:00 AM"
let date2 = dateFormatter.date(from: "1990-10-21") // "Oct 21, 1990 at 1:00 AM"
let date3 = dateFormatter.date(from: "1990-10-22") // "Oct 22, 1990 at 12:00 AM"https://stackoverflow.com/questions/69215373
复制相似问题