我在xcode 6.2中使用了swift的日期格式化程序。它在ios 8.1中正常工作但是当我在8.1以上的ios中测试我的应用程序时(我在8.2和8.4中尝试过),日期格式化程序无效。有没有人面临类似的问题。这是我得到的日期类型。字符串格式 10-08-2015T13:59:53 + 0000 。我需要在日期格式化程序中使用格式" dd-MM-yyyy' HH:mm:ssZZZ" 转换它,这是我的方法将字符串转换为日期: -
func dateFromString(dateString:String)->NSDate
{
print(dateString)
var dateFormatter = NSDateFormatter()
//yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ
dateFormatter.dateFormat = "dd-MM-yyyy'T'HH:mm:ssZZZ"
var date = dateFormatter.dateFromString(dateString)
print(date)
return date!
}
抱歉,我正在编辑Qusetion。我发现了为什么会这样。在iphone设置页面中的日期&时间如果24_hour_time为On它工作正常。如果它关闭那么只有日期格式化程序给出了nil date.I插入了GMT。它在8.1.3中工作正常但在8.4中出现问题
dateFormatter.timeZone = NSTimeZone(name: "GMT")
由于 快乐的编码
答案 0 :(得分:6)
我找到了这个问题的答案。抱歉延迟发布答案。您需要像我在此示例中所做的那样将 NSLocale 输入格式化程序。
func dateFromstring(dateString:String)->NSDate {
//print(date)
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy'T'HH:mm:ssZZZ"
//DateFormatter To change By chakshu
var enUSPOSIXLocale:NSLocale=NSLocale(localeIdentifier: "en_US_POSIX")
dateFormatter.locale=enUSPOSIXLocale
dateFormatter.timeZone = NSTimeZone(name: "GMT")
//dateFormatter.timeZone = NSTimeZone.localTimeZone()
var date = dateFormatter.dateFromString(dateString)
//print(date)
return date!
}
希望这有帮助。 感谢
答案 1 :(得分:1)
警告强>
否则,您的代码将返回正确的日期...但是以日期格式,而不是字符串。
要以所需格式打印,只需将日期转换回所需的字符串格式:
func dateFromString(dateString:String)->NSDate
{
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy'T'HH:mm:ssZZZ"
let date = dateFormatter.dateFromString(dateString)
return date!
}
let formatter = NSDateFormatter()
formatter.dateFormat = "dd/M/yyyy, H:mm"
print(formatter.stringFromDate(dateFromString("10-08-2015T13:59:53+0000")))
运行here以测试最新的Swift ......没有问题