我有一个包含数据库日期的json对象:
var showDateRaw = v["feedDate"].description
println(showDateRaw)
showDateRaw变量的类型是String,在解析json对象后看起来像这样: 2015-05-10T18:39:55 + 02:00
我想将其转换为这样:2015.05.10 - 18:39
首先,我尝试使用NSDateFormatter转换为NSDate:
var formatter : NSDateFormatter = NSDateFormatter()
formatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"
let dateShow = formatter.dateFromString(v["feedDate"].description)
println(dateShow)
然后以某种方式将此日期转换为新格式,然后将其转换为String。但是当我尝试打印格式化的dateShow变量时,它的值是nil ..
有人可以帮助我如何将此字符串日期转换为预期的格式?
非常感谢!
通过答案,我试过这种方式:
var formatter = NSDateFormatter()
formatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"
let dateShow = formatter.dateFromString(v["feedDate"].description)
var finalFormatter = NSDateFormatter()
finalFormatter.dateFormat = "yyyy.MM.dd HH:mm"
let finalDate = finalFormatter.stringFromDate(dateShow!)
但它会引发错误:
致命错误:在解包可选值时意外发现nil
你知道为什么会这样吗? 谢谢..更新:
这是解决方案,我的json解析器api有一个.asDate方法,该方法返回可选的NSDate。
let dateShow : NSDate? = v["feedDate"].asDate
var finalFormatter = NSDateFormatter()
finalFormatter.dateFormat = "yyyy.MM.dd - HH:mm"
let finalDate = finalFormatter.stringFromDate(dateShow!)
println(finalDate)
获得它后,很容易转换为预期的格式。
非常感谢您的每一个想法!
答案 0 :(得分:3)
您需要将从JSON中重新检索的日期重新格式化为您要使用的格式:
var formatter = NSDateFormatter()
formatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"
let dateShow = formatter.dateFromString(v["feedDate"].description)
var finalFormatter = NSDateFormatter()
finalFormatter.dateFormat = "yyyy.MM.dd - HH:mm"
let finalDate = finalFormatter.stringFromDate(dateShow)
我希望能帮到你!
答案 1 :(得分:3)
let dateShow = formatter.dateFromString(v["feedDate"].description)
我首先检查v["feedDate"]
是否不是可选的,因为在这种情况下,v["feedDate"].description
可能包含类似
Optional("2015-05-10T18:39:55+02:00")
而不是
2015-05-10T18:39:55+02:00
,
显然无法转换为NSDate ...
编辑:在您的原始帖子中,您提供了以下信息:
这就是它的打印:2015-05-27T12:51:28.27 + 02:00但如果我这样做 方式:println(v [" feedDate"]。asDate)它打印出来: 可选(2015-05-23 14:57:43 +0000)我使用这个repo进行解析 JSON
您可以在NSDateFormatter中使用此格式来解析它:
yyyy-MM-dd'T'HH:mm:ss.AAZZZZZ
看起来您正在使用的API实际上已经知道如何使用asDate方法来创建它的日期。在任何情况下,如果您使用自己的格式化程序,请确保将正确的字符串传递给它,而不是字符串的描述?。