首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DateFormatter不转换特定日期(Swift)

DateFormatter不转换特定日期(Swift)
EN

Stack Overflow用户
提问于 2021-09-16 21:27:10
回答 1查看 75关注 0票数 0

我在操场上有下面的代码,应用程序和DateFormatter只返回“1990-10-21”日期的零:

代码语言:javascript
复制
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年的测试..。效果很好..。

有没有人知道为什么或者怎么回事?是虫子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-16 21:43:22

您的代码有三个问题。第一个YYYYYearForWeekOfYear。你需要的是yyyy。第二,你不是在浪费时间。注意,并非所有的日子都是从12:00am (夏令储蓄过渡日期)开始的。您可以通过设置日期格式化程序的日历或将有效时间(12 or )与日期一起传递,从而防止日期格式化程序返回nil。第三,在使用固定日期格式时,应该始终将区域设置为"en_US_POSIX"

代码语言:javascript
复制
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"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69215373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档