我从 API 获取信息,其中一个字段是以下格式的 DateTime:
2014-12-12T14:44:18.973
我想删除“T”和它后面的任何内容,所以最后我得到:
2014-12-12
关于如何使用 Swift 执行此操作的任何想法或线索?不幸的是,我不能直接创建 NSDate,因为它会抛出异常。
最后,我想要 12-12-2014 之类的字符串格式。
谢谢!
最佳答案
幸运的是,您可以直接从中创建一个 NSDate,如下所示:
extension String {
func toDateFormattedWith(format:String)-> NSDate {
let formatter = NSDateFormatter()
// formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) // you can set GMT time
formatter.timeZone = NSTimeZone.localTimeZone() // or as local time
formatter.dateFormat = format
return formatter.dateFromString(self)!
}
}
有很多方法可以只从该字符串中选择日期。我会使用以下方法:
let myDate = "2014-12-12T14:44:18.973".componentsSeparatedByString("T")[0].toDateFormattedWith("yyyy-MM-dd") // "Dec 12, 2014, 12:00 AM"
您还可以创建一个扩展来从 Date 对象中提取该信息:
public extension NSDate {
var day: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitDay, fromDate: self).day }
var month: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitMonth, fromDate: self).month }
var year: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitYear, fromDate: self).year }
var dateAt12am: NSDate {
return NSCalendar.currentCalendar().dateWithEra(1, year: year, month: month, day: day, hour: 0, minute: 0, second: 0, nanosecond: 0)!
}
}
let myDate1 = "2014-12-12T14:44:18.973".toDateFormattedWith("yyyy-MM-dd\'T\'HH:mm:ss.SSS").dateAt12am
println(myDate1) // "2014-12-12 02:00:00 +0000" (12am local time)
如果你需要引用,你可以使用这个:
关于Swift:基于字符的子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27575636/