1
我試圖從服務器轉換時間戳,它也在轉換,但只有一個月會出錯。像時間戳是1492747393892,它轉換成21/03/17 - 12:03 PM但應該是21/04/17 - 12:03 PM。 這裏是我的代碼在swift 3中的Unix時間戳轉換問題
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)
}
您的代碼不能編譯,因爲它代表,可能是'的init(jsonTimeDate:字符串)?'方法(它看起來與http://stackoverflow.com/a/28854733/1187415 :)中的代碼有驚人的相似性,並且'dateTime'方法應該在'extension Date {}'內部。 –
除此之外,你月份的日期格式是錯誤的,它應該是「MM」,而不是「mm」。 –
它通過將「mm」更改爲「MM」來工作。謝謝您的幫助。 – manku