Swift使字符串中的NSDate无法按预期工作

时间:2014-10-10 00:06:17

标签: ios swift timezone nsdate

我试图将日期字符串转换为NSDate。我有这个输入日期字符串2014-10-09 17:57和此时区+4Asia/Dubai,出于某种原因,我在执行2014-10-09 13:57:00 +0000下面的代码后得到此NSDate。

let dateString = "2014-10-09 17:57"
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm"
formatter.timeZone = NSTimeZone(name: "Asia/Dubai")
println("\(formatter.dateFromString(dateString))")

我希望得到这样的日期2014-10-09 17:57 +0400。我究竟做错了什么?你能帮我解决一下吗?我需要日期在这个和另一个之间进行一些计算,这个计算是用时区正确格式化的。

1 个答案:

答案 0 :(得分:2)

它有助于分解复合语句。格式化程序的结果是自参考日期(GMT)以来的日期,秒,它没有格式或时区的概念。

println()显示基于日期的描述方法的默认格式。

如果希望以特定方式显示,请使用日期格式化程序创建所需的字符串表示形式。

示例:

let dateString = "2014-10-09 17:57"
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm"
formatter.timeZone = NSTimeZone(name: "Asia/Dubai")
let date = formatter.dateFromString(dateString)
println("date: \(date!)") // date: 2014-10-09 13:57:00 +0000

formatter.dateFormat = "yyyy-MM-dd HH:mm Z"
let formattedDateString = formatter.stringFromDate(date!)
println("formattedDateString: \(formattedDateString)") // formattedDateString: 2014-10-09 17:57 +0400