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



我正在尝试获取当前日期。当前日期和时间2019-12-16 05:12:59,但我得到2019-12-16 10:12:59.

let dateAdded = itemDict["time"] as! String
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd hh:mm:ss"
let currentTime = df.date(from: dateAdded)
let dateTime = currentTime!.addingTimeInterval(60.0 * 60.0)
let currentDate = Date()

试试这个:

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

要获取没有格式的当前时间,您只需添加以下内容:

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"。

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

//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

最新更新