dateFromString无法在Iphone设置转换为24小时swift

时间:2015-05-01 03:08:51

标签: ios swift date-formatting

我正在尝试使用dateFormatter从字符串转换。它可以在模拟器上正常工作,并在设置为12小时时在我的手机上正常工作,但在我的手机设置为24小时时无法设置。 (它在模拟器设置为24小时时设置。)

passedTime = "10:36 pm"
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "h:mm a"
let pickerDate = dateFormatter.dateFromString(passedTime)
println(pickerDate)

就像我说的那样,在12小时内在模拟器或手机上运行时,它可以完美运行,但是当手机24小时静音时,它会打印为零。我已经阅读了有关区域设置的事情,但是当我在手机上运行时,无论我是在12小时还是24小时模式,本地都是一样的。

3 个答案:

答案 0 :(得分:4)

我有完全相同的问题......非常令人沮丧。解决方案是设置日历的区域设置。对于Swift 3,它是:{ "_id" : ObjectId("57eb386e37b4842ff5f386c9"), "lesson_id" : ObjectId("57e27cd190e6993e393f5c74"), "student_id" : ObjectId("57d3c3f590e6995fe8de7932"), "answer_records" : { "1" : { "answer" : [ "A" ] }, "3" : { "answer" : [ "C" ] } }

答案 1 :(得分:1)

请务必检查12小时/ 24小时,并使用“H”24小时相应地设置格式化程序,并使用“h”12小时。

  

enter image description here

表格取自a blog post on Waracle.com,您可在其中找到完整列表。

答案 2 :(得分:0)

如何使用两个日期格式化程序进行解析?

var time12hrFormatter = NSDateFormatter()
time12hrFormatter.dateFormat = "h:mm a"
var time24hrFormatter = NSDateFormatter()
time24hrFormatter.dateFormat = "HH:mm"

if let pickerDate = time12hrFormatter.dateFromString(passedTime) {
    println(pickerDate)
} else if let pickerDate = time24hrFormatter.dateFromString(passedTime) {
    println(pickerDate)
} else {
    println("failed to parse '\(passedTime)'")
}