在swift 3中使用特定日期的日期格式时日期不匹配

时间:2017-03-28 08:05:00

标签: date swift3 ios10 nsdateformatter milliseconds

如果日期是2017年3月31日晚上11:59:59,如果我使用

    var dateFormatter: DateFormatter =
    {
        let formatter = DateFormatter()
        formatter.dateFormat = "MMM d,yyyy HH:mm:ss a"
        return formatter
    }()

以上格式,转换秒数后,该秒数代表日期2017年3月31日下午12:59:59

cellbidEndseconds  = (Int)((dateFormatter.date(from:arrMap_biddingDateEnd[indexPath.row])?.timeIntervalSince1970)!)

错误在哪里,有人可以解决并更新吗?

1 个答案:

答案 0 :(得分:0)

这不是您将Double转换为Int的方式。此外,timeIntervalSince1970返回自1970年1月1日午夜以来的的数量。您需要将其乘以1000以获得毫秒:

if let date = dateFormatter.date(from: arrMap_biddingDateEnd[indexPath.row]) {
    cellbidEndMillis = Int(date.timeIntervalSince1970 * 1000)
} else {
    print("Cannot convert date")
}

另外:如果您致电print(date),它始终会以GMT格式打印日期,与您当地时间相比,这可能会显示几个小时。您需要在心理上将其转换为您当地的时区(或者编写一种方法为您执行此操作)。这是我在StackOverflow上看到的混乱的一个重要原因。