快速日期格式化
Posted
技术标签:
【中文标题】快速日期格式化【英文标题】:Swift date formatting 【发布时间】:2015-03-06 15:23:20 【问题描述】:我正在尝试从按钮中提取日期字符串,格式为存储在 CoreData 中的日期。
这是我的代码:
let dateStr = setDateBTN.titleLabel?.text
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-YYYY"
let date:NSDate = dateFormatter.dateFromString(dateStr!)!
如果我在 dateStr 上执行 println,我会得到以下信息:03-10-2015
。然后,如果我立即 println on date 我得到:2014-12-21 05:00:00 +0000
.
当我通过日期格式化程序运行实际日期时,为什么实际日期会发生变化?
【问题讨论】:
查阅文档:年份的格式是“yyyy”,小写 y。 (而且你不是第一个犯这个错误的人:) 谢谢,马丁。我最初将它作为小写字母,但其他东西不起作用,所以我只是在寻求帮助的情况下将其更改为大写字母。 我刚刚发布了一个库,它可以帮助在 Swift 中使用 NSDate;希望对您有所帮助:github.com/malcommac/SwiftDate 【参考方案1】:NSDateFormatter 类参考:http://goo.gl/7fp9gl
日期格式指南(Apple):http://goo.gl/8zRTQl
一个常见的错误是使用 YYYY。 yyyy 指定日历年,而 YYYY 指定年份(“一年中的一周”),用于 ISO 年-周日历。
您的代码应该像您期望的那样工作:
let dateStr = setDateBTN.titleLabel?.text
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
let date:NSDate = dateFormatter.dateFromString(dateStr!)!
【讨论】:
请注意,在 Apple 的现代 ios 中,您必须这样做:***.com/a/42370648/294884(幸运的是,这更容易!)以上是关于快速日期格式化的主要内容,如果未能解决你的问题,请参考以下文章