サーバーのUTC時間を現地時間に変換したい場合は、逆の場合も同様です。 "12:52"Swift 3.0:サーバーのUTC時間を現地時間に換算すると
しかし、実際の現地時間と出力時間差がある:ここでは は、私は現地時間に
O/Pを取得
var isTimeFromServer = true var time:String! var period:String! let timeString = "6:59 AM" //Current UTC time if isTimeFromServer { let index = timeString.index(timeString.startIndex, offsetBy: 5) let twelve = timeString.substring(to: index) var dateString:String! let dateFormatter = DateFormatter() dateFormatter.dateFormat = "H:mm" let date12 = dateFormatter.date(from: twelve)! dateFormatter.dateFormat = "h:mm a" let date22 = dateFormatter.string(from: date12) //print(date22) dateString = date22 //print("dateString=\(dateString)") time = dateString.components(separatedBy: " ")[0] period = dateString.components(separatedBy: " ")[1] } else { time = timeString.components(separatedBy: " ")[0] period = timeString.components(separatedBy: " ")[1] } var hour = Int(time.components(separatedBy: ":")[0]) hour = period == "AM" ? hour : hour! + 12 let minute = Int(time.components(separatedBy: ":")[1]) let calender = NSCalendar.current var datecomponent = DateComponents() datecomponent.calendar = calender datecomponent.hour = hour datecomponent.minute = minute if !isTimeFromServer { // local to UTC datecomponent.timeZone = TimeZone.current } else { datecomponent.timeZone = TimeZone(abbreviation: "UTC") } let date = datecomponent.date let dateFormatter = DateFormatter() if !isTimeFromServer { dateFormatter.dateFormat = "H:mm" dateFormatter.timeZone = TimeZone(abbreviation: "UTC") dateFormatter.string(from: date!) } else { //UTC to local dateFormatter.dateFormat = "h:mm a" dateFormatter.timeZone = TimeZone.current dateFormatter.string(from: date!) }
..私のコードです23分。 これを解決するのを手伝ってください。前もって感謝します。
これはまさに私が欲しいものです。ありがとう@Mrugesh。 – NiravS
素晴らしい!ありがとう! – iDev750
唯一の没落は不都合です。この関数の各反復には約0.23ミリ秒かかります。何千もの日付を比較するとこれは不便になります – quemeful