如果日期是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)!)
错误在哪里,有人可以解决并更新吗?
答案 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上看到的混乱的一个重要原因。