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
12小时格式时间字符串中的日期时间不正确-Swift_Swift_Date_Time_Nsdateformatter - Fatal编程技术网

12小时格式时间字符串中的日期时间不正确-Swift

12小时格式时间字符串中的日期时间不正确-Swift,swift,date,time,nsdateformatter,Swift,Date,Time,Nsdateformatter,我有以下字符串作为12小时格式时间: let timeFrom = "05:30 AM"; let timeTo = "04:35 PM"; 并尝试从这些数据中获取日期以进行比较,如下所示: let openTime = timeFrom.date(format: "hh:mm a") let closeTime = timeTo.date(format: "hh:mm a") 通过此扩展: extension String { func date(format:String) -&

我有以下字符串作为12小时格式时间:

let timeFrom = "05:30 AM";
let timeTo = "04:35 PM";
并尝试从这些数据中获取日期以进行比较,如下所示:

let openTime = timeFrom.date(format: "hh:mm a")
let closeTime = timeTo.date(format: "hh:mm a")
通过此扩展:

extension String
{
    func date(format:String) -> Date?
    {
        let formatter = DateFormatter()
        formatter.dateFormat = format
        formatter.timeZone = NSTimeZone.local
        return formatter .date(from: self)
    }
}
当我打印openTime和closeTime时,我得到的时间值不正确:

print(openTime)      // 2000-01-01 00:00:00 +0000
print(closeTime)     // 2000-01-01 11:00:00 +0000

为什么会这样?我认为它和时区有关,所以我去了,但对我来说没有任何效果。如果有人有解决办法,请帮助我。谢谢大家!

我使用swift 3和Xcode 8进行检查,但有一些小改动,请检查其工作情况

 let timeFrom = "05:30 AM";
 let timeTo = "04:35 PM";
 let openTime = timeFrom.date(format: "hh:mm a")
 let closeTime = timeTo.date(format: "hh:mm a")

 print(openTime)
 print(closeTime)
并在扩展中进行更改

extension String{
func date(format:String) -> Date?
{
    let formatter = DateFormatter()
    formatter.timeZone = NSTimeZone(abbreviation: "GMT+0:00") as TimeZone!
    formatter.dateFormat = format
    //formatter.timeZone = NSTimeZone.local
    return formatter .date(from: self)
}}

找出“hh”和“hh”之间的区别。。应该有“hh”。谢谢你指出@el番茄。正在检查…可能与和许多其他内容重复。@rmaddy:我要求字符串“到日期”的时间不正确。重复链接是关于字符串到字符串的格式化。你必须正确地看待这两个问题。你希望看到的结果是什么?是的,我试着将“GMT+0:00”改为“GMT”,结果成功了。谢谢大家!@如果Akshaygajarawar正在工作,请接受我的回答,谢谢!我不明白原因,但这对我来说很有用!!经过4个小时的寻找解决方案,我只能说非常感谢!!!