2017-04-21 7 views
1

タイムスタンプをサーバーから変換しようとしていますが、変換もされていますが、月が間違っています。タイムスタンプは1492747393892で、21/03/17 - 12:03 PMに変換されますが、 21/04/17 - 12:03 PMにする必要があります。 はここにあなたのコード内の主なエラーが(分)で、「MM」ではなく、「ミリメートル」である必要があり、月、 の間違った日付形式である私のコード迅速なUNIXタイムスタンプ変換の問題3

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) 
} 
+0

それはおそらく 'のinit(jsonTimeDate:String)を、スタンドとしてあなたのコードがコンパイルされません?'メソッド(これは驚くほどhttp://stackoverflow.com/a/28854733/1187415のコードと似ています:)と 'dateTime'メソッドは'拡張Date {} 'の中になければなりません。 –

+2

それ以外は、月の日付形式が間違っています。「mm」ではなく「MM」でなければなりません。 –

+0

"mm"を "MM"に変更して機能しました。助けてくれてありがとう。 – manku

答えて

2

です。

それ以外は、あなたのアプローチはあまりにも複雑です。あなたが に持っているすべては、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 
関連する問題