DateFormatter在ios中不起作用通过设置

cha*_*shu 1 date-format swift xcode-6.2 ios8.4

我在xcode 6.2中使用了日期格式化程序和swift.它在ios 8.1中正常工作但是当我在8.1以上的ios中测试我的应用程序时(我在8.2和8.4中尝试过),日期格式化程序无效.有没有人面临类似的问题.这是我得到的日期类型.字符串格式10-08-2015T13:59:53 + 0000.我需要在日期格式化器中使用格式"dd-MM-yyyy'T'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!
    }
Run Code Online (Sandbox Code Playgroud)

对不起,我正在编辑Qusetion.我发现了为什么会这样.在iphone的设置页面中,如果24_hour_time为On,则为日期和时间.它工作正常.如果它关闭那么只有日期格式化程序给出了nil date.I插入了GMT.它在8.1.3中正常工作但是给出了8.4中的问题

 dateFormatter.timeZone = NSTimeZone(name: "GMT")
Run Code Online (Sandbox Code Playgroud)

谢谢快乐编码

cha*_*shu 7

我找到了这个问题的答案.抱歉延迟发布答案.您需要像我在此示例中所做的那样将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!
}
Run Code Online (Sandbox Code Playgroud)

希望这有帮助.谢谢