如何将日期转换为本地时区 ios swift

Nas*_*ved 7 date ios swift

我正在研究日期格式化程序,我从服务器收到字符串类型的日期响应,我将其转换为日期格式,但我想要做的是转换日期,然后根据本地时间进行管理。

例如,如果12/06/2017, 06:48:03是来自服务器的日期,而我来自巴基斯坦,那么它会根据 GMT+5 给我一个日期和时间,即12/06/2017, 11:48:03

与来自印度的相同,它根据 GMT+5:30 给我一个日期和时间,即 12/06/2017, 12:18:03

这是一个源代码

public class func converServerTimeStampToDate (_ timeStamp: String) -> Date {

        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "MM/dd/yyyy, hh:mm:ss a"
        dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
        let localDate = dateFormatter.date(from: timeStamp)
        dateFormatter.timeZone = TimeZone.current
        dateFormatter.dateFormat = "MM/dd/yyyy, hh:mm:ss a"

       // return dateFormatter.string(from: localDate!)
        return dateFormatter.date(from:dateFormatter.string(from: 
       localDate!))!

    }
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激 !!

Dun*_*n C 9

如果您希望结果是 Date 对象,只需使用@Intellij-Shivam 答案的第一部分:

func serverToLocal(date:String) -> Date? {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
    dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
    let localDate = dateFormatter.date(from: date)

    return localDate
}
Run Code Online (Sandbox Code Playgroud)

(请注意,DateFormatter.date(from:)返回一个可选的,这是正确的,因为输入日期字符串的格式可能不正确。)

Date在您当地的时区中没有诸如 a 之类的东西。Dates没有时区。他们记录了整个星球的瞬间。

要在本地时区显示日期,您可以使用DateFormatter类方法localizedString()

let dateString = DateFormatter.localizedString(
  inputDate, 
  dateStyle: .medium, 
  timeStyle: .medium)
Run Code Online (Sandbox Code Playgroud)

  • (我认为你应该接受@Intellij-Shivam 的回答。上面的代码是他的,只做了很小的修改。) (2认同)