dateFromServer return 是否是此人的当前时区?

Does dateFromServer return the current Timezone of the person?

当我 运行 时,返回的日期和时间下方的代码格式正确,但不是来自 API 的代码,在本例中是 currentVehicle.LastCommunicationDate! 而不是来自 currentVehicle.LastCommunicationDate! 的时间,它只是返回一个随机时区,我认为这是从服务器或类似的东西获得的。

我现在拥有的代码的输出是:2022-01-21 02:04:15 本来应该是我当地时区的实时时间,但它得到了不同的时区。

来自邮递员的LastCommunicationDate是json格式:"LastCommunicationDate": "2022-01-21T10:58:21.367",

我想要的时间是 Postman 刚刚从 json 转换为正常时间的时间,例如:yyyy-MM-dd HH:mm:ss

    let timeinterval : TimeInterval = (currentVechicle.LastCommunicationDate! as NSString).doubleValue
    let dateFromServer = NSDate(timeIntervalSinceNow:timeinterval)
    let outFormatter = DateFormatter()
    outFormatter.locale = Locale(identifier: "en_Al")
    print(dateFromServer)
    let dateFormater = outFormatter
    outFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
    print(dateFormater.string(from: dateFromServer as Date))
    let dateFromServers = dateFormater.string(from: dateFromServer as Date)

LastCommunicationDate 是一个字符串,但您正在将其转换为 Double。试试这个:

let lastCommunicationDate = "2022-01-21T10:58:21.367"

//Create dateformatter to convert string to Date
let isoDateFormatter = ISO8601DateFormatter()
isoDateFormatter.formatOptions = [
    .withFullDate,
    .withTime,
    .withColonSeparatorInTime,
    .withFractionalSeconds
]

let isoDateFormatter2 = ISO8601DateFormatter()
isoDateFormatter2.formatOptions = [
    .withFullDate,
    .withTime,
    .withColonSeparatorInTime
]
let date = isoDateFormatter.date(from: lastCommunicationDate) ?? isoDateFormatter2.date(from: lastCommunicationDate)

//Create dateformatter to format date for output
let outFormatter = DateFormatter()
outFormatter.locale = Locale(identifier: "en_Al")
outFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"

let dateFromServers = outFormatter.string(from: date!)