gpt4 book ai didi

swift - swift 3 中的 Unix 时间戳转换问题

转载 作者:搜寻专家 更新时间:2023-11-01 07:13:37 27 4
gpt4 key购买 nike

我正在尝试从服务器转换时间戳,它也在转换,但只有月份是错误的。比如时间戳是 1492747393892,它转换为 21/03/17 - 12:03PM,但它应该是 21/04/17 - 中午 12 点 03 分。这是我的代码

var arriveTimestamp: Int 
if let timeStampToDate = arriveTimestamp {
let timeSt = Date(jsonTimeDate:"/Date(\(timeStampToDate))/")
let time = Date().dateTime(date: timeSt!)
valueLbl.text = time
}

init?(jsonTimeDate: String) {
// "/Date(1487058855745)/"

let prefix = "/Date("
let suffix = ")/"
let scanner = Scanner(string: jsonTimeDate)

// Check prefix:
guard scanner.scanString(prefix, into: nil) else { return nil }

// Read milliseconds part:
var milliseconds : Int64 = 0
guard scanner.scanInt64(&milliseconds) else { return nil }
// Milliseconds to seconds:
var timeStamp = TimeInterval(milliseconds)/1000.0

// Read optional timezone part:
var timeZoneOffset : Int = 0
if scanner.scanInt(&timeZoneOffset) {
let hours = timeZoneOffset / 100
let minutes = timeZoneOffset % 100
// Adjust timestamp according to timezone:
timeStamp += TimeInterval(3600 * hours + 60 * minutes)
}

// Check suffix:
guard scanner.scanString(suffix, into: nil) else { return nil }

// Success! Create NSDate and return.
self.init(timeIntervalSince1970: timeStamp)
}

func dateTime(date: Date) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/mm/yy - hh:mm a"
return dateFormatter.string(from: date as Date)
}

最佳答案

代码中的主要错误是错误的月份日期格式,应该是“MM”,而不是“mm”(代表分钟)。

除此之外,您的方法太复杂了。所有你必须做的是将时间戳(以毫秒为单位)除以 1000并调用 Date(timeIntervalSince1970:):

let arriveTimestamp = 1492747393892
let date = Date(timeIntervalSince1970: TimeInterval(arriveTimestamp)/1000)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yy - hh:mm a"
let text = dateFormatter.string(from: date)

print(text) // 21/04/17 - 06:03 AM

关于swift - swift 3 中的 Unix 时间戳转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43534777/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com