快速日期格式化

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(幸运的是,这更容易!)

以上是关于快速日期格式化的主要内容,如果未能解决你的问题,请参考以下文章

无法快速更改旧日期格式的新日期格式?

在excel中 如何快速吧日期格式ddmmyyyy改为yyyymmdd这种

使用 NSDateFormatter 快速格式化日期

如何将EXCEL表格中的出生日期格式快速转换?

如何将Excel日期快速转化为文本格式?

Java快速获取格式化的日期字符串