Swift 使用 NSDateFormatter 格式化日期
Swift date formatting with NSDateFormatter
我有一个 json 对象,其中包含来自数据库的日期:
var showDateRaw = v["feedDate"].description
println(showDateRaw)
showDateRaw 变量的类型是字符串,在解析 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)
然后以某种方式将此日期转换为新格式,然后将其转换为字符串。但是当我尝试打印格式化的 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 方法,该方法 return 带有可选的 NSDate。
let dateShow : NSDate? = v["feedDate"].asDate
var finalFormatter = NSDateFormatter()
finalFormatter.dateFormat = "yyyy.MM.dd - HH:mm"
let finalDate = finalFormatter.stringFromDate(dateShow!)
println(finalDate)
得到后,很容易转换成预期的格式。
非常感谢你的每一个想法!
您需要将从 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)
希望对你有帮助!
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...
编辑:在您的原始 post 下,您提供了以下信息:
this is what it's print: 2015-05-27T12:51:28.27+02:00 but if i do this
way: println(v["feedDate"].asDate) it's print this:
Optional(2015-05-23 14:57:43 +0000) i'm using this repo for parsing
json
您可以在 NSDateFormatter 中使用这种格式来解析它:
yyyy-MM-dd'T'HH:mm:ss.AAZZZZZ
看起来您正在使用的 API 实际上已经知道如何使用 asDate 方法为其创建日期。在任何情况下,如果您使用自己的格式化程序,请确保将正确的字符串传递给它,而不是对字符串的描述?
我有一个 json 对象,其中包含来自数据库的日期:
var showDateRaw = v["feedDate"].description
println(showDateRaw)
showDateRaw 变量的类型是字符串,在解析 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)
然后以某种方式将此日期转换为新格式,然后将其转换为字符串。但是当我尝试打印格式化的 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 方法,该方法 return 带有可选的 NSDate。
let dateShow : NSDate? = v["feedDate"].asDate
var finalFormatter = NSDateFormatter()
finalFormatter.dateFormat = "yyyy.MM.dd - HH:mm"
let finalDate = finalFormatter.stringFromDate(dateShow!)
println(finalDate)
得到后,很容易转换成预期的格式。
非常感谢你的每一个想法!
您需要将从 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)
希望对你有帮助!
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...
编辑:在您的原始 post 下,您提供了以下信息:
this is what it's print: 2015-05-27T12:51:28.27+02:00 but if i do this way: println(v["feedDate"].asDate) it's print this: Optional(2015-05-23 14:57:43 +0000) i'm using this repo for parsing json
您可以在 NSDateFormatter 中使用这种格式来解析它:
yyyy-MM-dd'T'HH:mm:ss.AAZZZZZ
看起来您正在使用的 API 实际上已经知道如何使用 asDate 方法为其创建日期。在任何情况下,如果您使用自己的格式化程序,请确保将正确的字符串传递给它,而不是对字符串的描述?