将mysql日期转换为NSDate
使用JSON,我从数据库中提取一个日期,在php中格式为Y-m-d。例如,2015年5月27日 我已经将日期存储在swift中,并且可以在以相同方式打印字符串时看到它的格式。我按照其他答案和教程尝试将日期转换为dd-MM-yyyy,但每次都返回“nil” 如果我尝试将日期转换为yyyy-MM-dd,我将得到“2015-05-26 23:00:00+0000” 我的代码:将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
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
方法。