Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 通过设置,DateFormatter在ios中不工作_Swift_Date Format_Xcode 6.2_Ios8.4 - Fatal编程技术网

Swift 通过设置,DateFormatter在ios中不工作

Swift 通过设置,DateFormatter在ios中不工作,swift,date-format,xcode-6.2,ios8.4,Swift,Date Format,Xcode 6.2,Ios8.4,我在使用swift的xcode 6.2中使用了日期格式化程序。它在ios 8.1中运行良好,但当我在ios 8.1以上版本中测试我的应用程序时,我在8.2和8.4中尝试了日期格式化程序,但它不工作。有没有人面临类似的问题。这是我获取的字符串格式的日期类型10-08-2015T13:59:53+0000。我需要在date with date formatter中转换它,格式为dd MM yyyy'T'HH:MM:ssZZZ,这是我将字符串转换为日期的方法:- func dateFromString

我在使用swift的xcode 6.2中使用了日期格式化程序。它在ios 8.1中运行良好,但当我在ios 8.1以上版本中测试我的应用程序时,我在8.2和8.4中尝试了日期格式化程序,但它不工作。有没有人面临类似的问题。这是我获取的字符串格式的日期类型10-08-2015T13:59:53+0000。我需要在date with date formatter中转换它,格式为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!
    }
对不起,我正在编辑这个问题。我找到了它发生的原因。在iphone的“日期和时间”设置页面中,如果24小时开机,则工作正常。如果关机,则只有日期格式化程序给出的日期为零。我在其中插入了GMT。在8.1.3中工作正常,但在8.4中给出了问题

谢谢 快乐编码

警告

格式化程序的函数名与 自定义函数。不是说这是你的问题而是 可能不是有意的。 在某些情况下,您使用的是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")))
运行以测试最新的Swift。。。无问题

警告

格式化程序的函数名与 自定义函数。不是说这是你的问题而是 可能不是有意的。 在某些情况下,您使用的是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")))

运行以测试最新的Swift。。。没有问题我找到了这个问题的答案。很抱歉延迟发布答案。您需要向格式化程序输入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!
}
希望这有帮助。
谢谢,我找到了这个问题的答案。很抱歉延迟发布答案。您需要向格式化程序输入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!
}
希望这有帮助。
谢谢

我在iOS 8.4上试用过,效果很好。当你说不工作时,到底出了什么问题?得到一个零,然后当你打开它时失败了?不相关,但是,建议也设置区域设置来处理国际日历。看,xxx不工作在SO的帖子里说是完全没用的。它到底在干什么?撞车?提供错误的数据?返回零?当您回答自己的问题时,如果您想要自己的答案,您不应该编辑问题,而应该发布并接受。看见顺便说一句,按照上面的技术问答1480中的建议,将区域设置设置为en_US_POSIX,修复了此问题以及其他问题,例如非公历日历。我在iOS 8.4上尝试了此方法,效果很好。当你说不工作时,到底出了什么问题?得到一个零,然后当你打开它时失败了?不相关,但是,建议也设置区域设置来处理国际日历。看,xxx不工作在SO的帖子里说是完全没用的。它到底在干什么?撞车?提供错误的数据?返回零?当您回答自己的问题时,如果您想要自己的答案,您不应该编辑问题,而应该发布并接受。看见顺便说一句,按照上面的技术问答1480中的建议,将区域设置设置为en_US_POSIX,修复了此问题以及其他问题,例如非公历日历。好的,它成功了。我不明白为什么。无论如何,谢谢你,巴德!好吧,它起作用了。我不明白为什么。无论如何,谢谢你,巴德!