Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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
Ios 转换后的无效日期12小时->;24小时_Ios_Swift_Nsdateformatter - Fatal编程技术网

Ios 转换后的无效日期12小时->;24小时

Ios 转换后的无效日期12小时->;24小时,ios,swift,nsdateformatter,Ios,Swift,Nsdateformatter,我想将上午/下午时间转换为24小时。那应该是微不足道的。。。但我反对一个奇怪的问题: let inputDateString = "11:05:45PM" let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "HH:mm:ssa" let inputDate = dateFormatter.dateFromString(inputDateString) // "Jan 1, 2000, 12:05 PM" ???

我想将上午/下午时间转换为24小时。那应该是微不足道的。。。但我反对一个奇怪的问题:

let inputDateString = "11:05:45PM"

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH:mm:ssa"
let inputDate = dateFormatter.dateFromString(inputDateString) // "Jan 1, 2000, 12:05 PM" ???

if let inputDate = inputDate {
    dateFormatter.dateFormat = "HH:mm:ss"
    print(dateFormatter.stringFromDate(inputDate))
}
  • 我想也许它在用一些奇怪的时区转换时间。因此,我尝试添加
    systemLocale
    或gblocale,但没有任何帮助
  • 然后我想到了一个想法,也许它不能将日期设置在2000年1月1日12:00:00之前(这是毫无意义的,因为它至少应该在1970年之前工作)。因此,我添加了日期、月份等,将其移至2005年,但问题仍然存在
  • 您可以使用
    import Foundation
    轻松地将其粘贴到操场上进行测试

    为什么我的时间错了

    --编辑--


    如果将
    inputDateString
    更改为任何其他时间,如
    “01:05:45PM”
    ,则
    inputDate
    将是相同的:/但是如果更改分钟或秒,它将相应地更新。

    您需要将日期格式更改为
    “hh:mm:ssa”
    ,因为小写的
    h
    表示输入时间为12小时格式

    DateFormatter使用Unicode标准进行格式化,因此它使用中的值(自2016年8月起对macOS 10.9和iOS 7及更新版本有效)


    可在上找到更易于使用的参考资料

    第一种格式应该是
    hh:mm:ssa
    2000年1月1日,因为您希望读取的日期不是日期,而是时间。它将默认值放入其中。@pedrouan这不是问题所在。无论如何,答案已经在下面;)。我看到了。只想澄清一下@ViveThe第二个是一个非常好的参考,谢谢你的URL!DateFormatter按照字面意思解释格式字符串。
    a
    只是告诉它,这是可以找到AM/PM信息的位置。他还需要知道实际输入的小时数是12小时(
    hh
    )还是24小时(
    hh
    )格式。这与20分钟前发布并被接受的@ast1相同。这个答案有什么好处?
    let inputDateString = "11:05:45PM"
    
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "HH:mm:ssa" // Here, change the format string to "hh:mm:ssa"
    let inputDate = dateFormatter.dateFromString(inputDateString) // "Jan 1, 2000, 12:05 PM" ???
    
    if let inputDate = inputDate {
        dateFormatter.dateFormat = "HH:mm:ss"
        print(dateFormatter.stringFromDate(inputDate))
    }