Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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 试图获取当前时间,但它给了我错误的时间_Swift_Date_Swift5 - Fatal编程技术网

Swift 试图获取当前时间,但它给了我错误的时间

Swift 试图获取当前时间,但它给了我错误的时间,swift,date,swift5,Swift,Date,Swift5,我想知道现在的日期。当前日期和时间是2019-12-16 05:12:59,但我得到2019-12-16 10:12:59。 let dateAdded=itemDict[“time”]as!一串 设df=DateFormatter() df.dateFormat=“yyyy-MM-dd hh:MM:ss” 让currentTime=df.date(from:dateAdded) 让dateTime=currentTime!。添加时间间隔(60.0*60.0) 让currentDate=Dat

我想知道现在的日期。当前日期和时间是
2019-12-16 05:12:59
,但我得到
2019-12-16 10:12:59。

let dateAdded=itemDict[“time”]as!一串
设df=DateFormatter()
df.dateFormat=“yyyy-MM-dd hh:MM:ss”
让currentTime=df.date(from:dateAdded)
让dateTime=currentTime!。添加时间间隔(60.0*60.0)

让currentDate=Date()
不使用格式获取当前时间,只需添加以下内容:

let currentDateTime = Date()
print(currentDateTime)
但是,如果要检索“字符串”并将其转换为日期,可以执行以下操作:

let dateAdded = itemDict["time"] as! String
//Convert string to date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm"
let date = dateFormatter.date(from: dateAdded!)
如果你仍然得到错误的时间,你应该添加时区。在这种情况下,代码如下所示:

let dateAdded = itemDict["time"] as! String
//Convert string to date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let date = dateFormatter.date(from: dateAdded!)
如果您使用大写字母“HH”,则表示您使用的是24小时时钟。否则请使用小写字母“hh”。

尝试以下操作:

Date().toCurrentTimezone()

extension Date {
    func toCurrentTimezone() -> Date {
        let timeZoneDifference = 
        TimeInterval(TimeZone.current.secondsFromGMT())
        return self.addingTimeInterval(timeZoneDifference)
   }
}

您需要在日期格式化程序中设置本地时区

//Get local time Zone
var localTimeZoneIdentifier: String { return TimeZone.current.identifier }
print("local Time zone: " + localTimeZoneIdentifier)

let inputdateString: String = "2019-12-16 05:12:59"
let dateFormatter  = DateFormatter()
dateFormatter.locale = Locale(identifier: localTimeZoneIdentifier)
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
let inputDate = dateFormatter.date(from: inputdateString )!
print("Output date: \(String(describing: inputDate))")
输出:-

local Time zone:-Asia/Kolkata
Output date: 2019-12-15 23:42:59 +0000

你也需要设置时区。你转换的字符串是什么?(全部)你什么时候到?这不编译。
toCurrentTimezone
方法从何而来?@MartinR您添加了扩展名吗?