使用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)"
答案 0 :(得分:1)
使用日期格式化程序的代码是正确的,并且实际上正常工作。
日期格式化程序默认为用户的当前时区,因此您输入的日期为“2015-05-27”将假定为当天时区当天的午夜(我认为)。
Println以UTC格式显示日期,因此您将看到UTC的输出。显然你是UTC + 1,所以日期显示为前一天晚上11点。
您可以使用其他日期格式化程序以您想要的任何格式在本地时区输出日期作为字符串。
答案 1 :(得分:1)
您已将日期格式化程序的dateFormat
属性设置为dd-MM-yyyy
,但survey_date
中的字符串格式为yyyy-MM-dd
。因此,此行中的日期值...
var date = dateFormatter.dateFromString(survey_date) as NSDate!
是nil
。这是一个简单的解决方法 - 将dateFormat
更改为yyyy-MM-dd
。
以NSDate
格式打印yyyy-MM-dd
也是一个简单的解决方法。就像您使用NSDateFormatter
的{{1}}方法将格式由其dateFromString()
属性指定的字符串转换为dateFormat
一样,请使用NSDate
NSDateFormatter
方法将stringFromDate()
转换为NSDate
格式的字符串。
这是您的代码,应用了这两个修补程序:
dateFormat
答案 2 :(得分:0)
在此网站上阅读其他答案,似乎Swift没有本机Date对象,但您可以改为使用Cocoa NSDate
对象:
var date = Date.parse("2014-05-20")
第二个参数是format,默认为yyyy-MM-dd
(这是MySQL的日期)。
我想一旦你有一个NSDate
对象,你就可以用你选择的格式打印它。