将mysql日期转换为NSDate

将mysql日期转换为NSDate,mysql,swift,date,datetime,Mysql,Swift,Date,Datetime,使用JSON,我从数据库中提取一个日期,在php中格式为Y-m-d。例如,2015年5月27日 我已经将日期存储在swift中,并且可以在以相同方式打印字符串时看到它的格式。我按照其他答案和教程尝试将日期转换为dd-MM-yyyy,但每次都返回“nil” 如果我尝试将日期转换为yyyy-MM-dd,我将得到“2015-05-26 23:00:00+0000” 我的代码: var survey_date = prefs.valueForKey("SURVEY_DATE") as! String

使用JSON,我从数据库中提取一个日期,在php中格式为Y-m-d。例如,2015年5月27日

我已经将日期存储在swift中,并且可以在以相同方式打印字符串时看到它的格式。我按照其他答案和教程尝试将日期转换为dd-MM-yyyy,但每次都返回“nil”

如果我尝试将日期转换为yyyy-MM-dd,我将得到“2015-05-26 23:00:00+0000”

我的代码:

var survey_date = prefs.valueForKey("SURVEY_DATE") as! String

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
var date = dateFormatter.dateFromString(survey_date) as NSDate!

println(date)

self.survey_date.text = "Your survey is scheduled for \(date)"

阅读本网站上的其他答案,Swift似乎没有本机日期对象,但您可以使用Cocoa
NSDate
对象:

var date = Date.parse("2014-05-20")
第二个参数是format,默认为
yyyy-MM-dd
(这是MySQL日期)


我想,一旦你有了一个
NSDate
对象,你就可以用你选择的格式打印它了。

你使用日期格式化程序的代码是正确的,而且实际上工作正常

日期格式化程序默认为用户的当前时区,因此您输入为“2015-05-27”的日期将假定为当地时区当天的午夜(我想)

Println以UTC显示日期,因此您可以看到UTC的输出。显然,您处于UTC+1,因此日期显示为前一天晚上11:00


您可以使用另一个日期格式化程序以您想要的任何格式在本地时区中以字符串形式输出日期

您已将日期格式化程序的
dateFormat
属性设置为
dd-MM-yyyy
,但
survey\u-date
中的字符串格式为
yyyy-MM-dd
。因此,此行中日期的值

var date = dateFormatter.dateFromString(survey_date) as NSDate!
nil
。这是一个简单的解决方案--将
dateFormat
更改为
yyyy-MM-dd

yyyy-MM-dd
格式打印
NSDate
也是一个简单的解决方法。正如您使用
NSDateFormatter
dateFromString()
方法将其
dateFormat
属性指定格式的字符串转换为
NSDate
,请使用
NSDateFormatter
stringFromDate()
NSDate
转换为具有
dateFormat
格式的字符串的方法

这是您的代码,应用了以下两个修复程序:

var survey_date = prefs.valueForKey("SURVEY_DATE") as! String

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
var date = dateFormatter.dateFromString(survey_date) as NSDate!
let outputDate = dateFormatter.stringFromDate(date)

println(outputDate)

self.survey_date.text = "Your survey is scheduled for \(outputDate)"

我的问题是将var survey_date=prefs.valueForKey(“survey_date”)设置为!要转换为nsdate的字符串如果您在上面查看,
Date.parse
的第一个参数是一个字符串,因此将MySQL日期转换为字符串,然后将其传递到
parse
方法。