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

时间:2015-08-10 14:25:54

标签: swift date-format 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' 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")

由于 快乐的编码

2 个答案:

答案 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)

警告

  • 格式化程序的函数名称与您的函数名称相同 自定义功能。不是说这是你的问题,而是一些问题 可能没有打算。
  • 在某些情况下,您使用的是var而不是let,不会导致错误

否则,您的代码将返回正确的日期...但是以日期格式,而不是字符串。

要以所需格式打印,只需将日期转换回所需的字符串格式:

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 ......没有问题