假设我有一个简单的String,它是从一个字符串数组中提取的(代表日期)-
var myDateString = "2015-11-25 04:31:32.0"
现在,我想将其转换为类似于2015年11月25日的字符串。
为此,我认为我需要-
我曾在Playground中尝试过此方法,但无法解决如此简单的问题。
这是我尝试过的-
Line 1| var dateFormatter = NSDateFormatter()
Line 2| dateFormatter.locale = NSLocale.currentLocale()
Line 3| dateFormatter.dateFormat = "YYYY-MM-dd HH:mm:ss.A"
Line 4| let somedate = dateFormatter.dateFromString(str)
Line 5| let somedateString = dateFormatter.stringFromDate(somedate!)
在Xcode的侧边栏中,将打印第4行"Nov 25, 2015, 12:00 AM"
,但是当我尝试从中打印字符串时somedate
,会得到"2015-11-25 00:00:00.0"
。
我在任何地方都找不到对NSDates的正确解释。
在Java中,使用Datesparse()
和format()
函数可以轻松得多。
已为Swift 3.0更新
您需要两个日期格式化程序-一个用于理解您的输入字符串并转换为NSDate的日期格式化程序,另一个用于创建输出字符串的格式化程序
let myDateString = "2016-01-01 04:31:32.0"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss.A"
let myDate = dateFormatter.date(from: myDateString)!
dateFormatter.dateFormat = "MMM dd, YYYY"
let somedateString = dateFormatter.string(from: myDate)
我已经更新了此答案,将日期格式从YYYY更改为yyyy。在大多数情况下,两者之间没有区别,但是YYYY可能会将一年的前几天视为上一年的最后一个完整周的一部分。
Apple开发人员指南对此进行了解释。
一个常见的错误是使用YYYY。yyyy指定日历年,而YYYY指定在ISO年周日历中使用的年份(“年中的一周”)。在大多数情况下,yyyy和YYYY产生相同的数字,但是它们可能不同。通常,您应该使用日历年。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句