到完整日期的毫秒数 returns 在我的时区错误的一天

milliseconds to full date returns wrong day in my time zone

我开发了一个应用程序,它必须显示当前日期和时间,而不是从设备读取,而是从 http-get 服务读取

我从服务器读取了一个长整数,我应该转换为当前年月日和时间

我正在使用此方法,但 returns 错误的日期和时间。

func setDay(day:Double) {


    let formatter = DateFormatter()
    formatter.calendar = Calendar(identifier: .persian)
    formatter.locale = Locale(identifier: "fa_IR")
   var date = Date(timeIntervalSince1970: (day / 1000.0))
    // day
    formatter.dateFormat = "dd"


    //time=formatter.string(from: date)

    self.day = formatter.string(from: date)
    print(self.day) //wrong day
}

例如长整数是:1532928652552.0

这个月的第几天在我的国家是 11 但 returns 8

func convertEpochToStringDate(epoch: Int) -> String {
    let dbl = TimeInterval(epoch)
    let date = Date(timeIntervalSince1970: dbl)

    let formatter = DateFormatter()
    formatter.calendar = Calendar(identifier: .persian)
    formatter.locale = Locale(identifier: "fa_IR")
    formatter.dateFormat = "dd"
    formatter.timeZone = TimeZone(identifier: "IRST")

    return formater.string(from: date)
}

我们来测试一下:

let time = convertEpochToStringDate(epoch: 1532928652552 / 1000)
print(time)

输出:۰۸