Swift 毫秒到完整日期在我的时区返回错误的日期

Swift 毫秒到完整日期在我的时区返回错误的日期,swift,date,time,formatter,Swift,Date,Time,Formatter,我开发了一个应用程序,它必须显示当前日期和时间,而不是从设备读取,而是从http get服务读取 我从服务器读取了一个长整数,我应该转换为当前的年、月、日和时间 我正在使用此方法,但返回了错误的日期和时间 func setDay(day:Double) { let formatter = DateFormatter() formatter.calendar = Calendar(identifier: .persian) formatter.locale = Loca

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

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

我正在使用此方法,但返回了错误的日期和时间

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号,但又是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)

输出:
۰۸

您能添加一个测试值,以及当前输出和预期输出吗?我编辑了我的第一篇帖子,是在大纪元时间1532927876478.0吗?!它是毫秒。实际上是爪哇岛15号,今天是11号。你认为我的系统有问题吗??我在系统中更改了时区,它必须是11而不是08。今天是11月11日MORDAD@M0TRIX,这个号码:1532928652是给8莫达德的。请在此处查看:。所以你错过了错误的大纪元时间。我刚才也为伊朗时间添加了时区标识符。我的错误是瓦希德。加1