所以我有一個函式可以將指定的本地時間轉換為 UTC(時間以字串開始和結束)
我需要為這個時間添加一個持續時間(比如 1.5 小時),這可能最終會持續到第二天,所以我相信我需要使用 Calendar,而不是 timeInterval。
我對這是如何完成的有點無能為力,檔案不是最好的,而且我不擅長 Swift。
這是我到目前為止所擁有的。
import Foundation
func localToUTC(date:String, originTimeZone:String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm"
dateFormatter.timeZone = TimeZone(identifier: originTimeZone)
let dt = dateFormatter.date(from: date)
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm"
return dateFormatter.string(from: dt!)
}
print(localToUTC(date: "05/01/2021 15:37", originTimeZone: "America/Boise"))
為了清楚起見,我正在嘗試向我的函式添加另一個引數(或創建一個新函式,無關緊要)以將持續時間添加到我當前函式輸出的 UTC 時間。
把事情放在背景關系中,假設航班在當地時間 15:37 起飛(例如,博伊西,UTC 轉換為 6)。
因此,該航班將于 2021 年 5 月 1 日 UTC 時間 21:37 起飛。飛行時間為4小時。
我想要 5/2/2021 01:37 UTC 的輸出。
uj5u.com熱心網友回復:
只需將飛行持續時間添加到生成的日期物件中。另請注意,您不應強制解開結果,因為它可能會導致您的應用程式崩潰。確保在傳遞無效字串的情況下回傳 nil。就像是:
func localToUTC(date: String, originTimeZone: String, duration: TimeInterval) -> String? {
let dateFormatter = DateFormatter()
dateFormatter.locale = .init(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm"
guard let timezone = TimeZone(identifier: originTimeZone) else { return nil }
dateFormatter.timeZone = timezone
guard let dt = dateFormatter.date(from: date) else { return nil }
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
return dateFormatter.string(from: dt.addingTimeInterval(duration))
}
print(localToUTC(date: "05/01/2021 15:37", originTimeZone: "America/Boise", duration: 4 * 60 * 60) ?? "nil")
這將列印
05/02/2021 01:37
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/322521.html
