【问题标题】:milliseconds to full date returns wrong day in my time zone毫秒到完整日期在我的时区返回错误的日期
【发布时间】:2018-08-02 07:51:43
【问题描述】:

我开发了一个应用程序,它必须显示当前日期和时间,而不是从设备读取,而是从 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

【问题讨论】:

  • 您能否添加一个测试值以及当前输出和预期输出?
  • 坦克我编辑了我的第一篇文章
  • 纪元时间是1532927876478.0吗?!
  • 毫秒。实际上它是java long

标签: swift date time formatter


【解决方案1】:
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)

输出:۰۸

【讨论】:

  • return 15 MORDAD 今天是11。你觉得是我的系统有问题吗??我在我的系统中更改了我的时区
  • Vahid 一定是 11 而不是 08。今天是 MORDAD 的 11
  • @M0TRIX,这个号码:1532928652 是 8 Mordad。在这里查看:epochconverter.com。所以你传递了错误的纪元时间。
  • 我刚刚也为伊朗时间添加了时区标识符。
  • 我的错误 Vahid.plus 1 给你
猜你喜欢
  • 2014-10-12
  • 1970-01-01
  • 2021-04-02
  • 2017-03-01
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多