2015-09-15 133 views
0

我想從我的iPad到我的網站,這兩者都是本地的差異。每件事情都可以正常工作,直到我看到下面這行,這應該是iPad的時間,並從中減去serverTime。演員從(NSDate) - > NSTimeInterval到無關類型'NSTimeInterval總是失敗

self.serverTimeOffSet = NSDate.timeIntervalSinceDate(serverTime) as NSTimeInterval 

我得到 「從(NSDate的)演員 - > NSTimeInterval到不相關類型的「NSTimeInterval總是失敗」 的警告,並self.serverTimeOffset永遠不會設置。

var serverTimeOffSet: NSTimeInterval = 0.0 

func setServerOffset(){ 
    var currentTime = NSDate.timeIntervalSinceReferenceDate() 
    var url = NSURL(string: "http://someurl.com/time") 
    var request = NSMutableURLRequest(URL:url!) 
    var response: NSURLResponse? 
    var error: NSError? 
    request.HTTPMethod = "get" 
    request.setValue("application/json", forHTTPHeaderField: "Content-Type") 
    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: {(response:NSURLResponse!, data:NSData!, error:NSError!) -> Void in 
     if (error == nil) { 
      var dateString = NSString(data: data, encoding: NSUTF8StringEncoding) as! String 
      let dateFormatter = NSDateFormatter() 
      dateFormatter.dateFormat = "YYYY-MM-dd'T'HH:mm:ss" 
      dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
      if let serverTime = dateFormatter.dateFromString(dateString){ 
       self.serverTimeOffSet = NSDate.timeIntervalSinceDate(serverTime) as NSTimeInterval 
      } 
     } 
    }) 
} 

感謝

編輯 - 從現場返回的日期:

2015-09-15T00:01:44.8530546-06:00 
+1

使通過'JSON'返回和'DateFormatter'(「YYYY-MM-dd'T'HH設置確定日期格式:毫米:ss「)相同,否則無法轉換爲日期。 –

+0

我在「self.serverTimeOffSet = NSDate.timeIntervalSinceDate(serverTime)」行上放置了一個斷點作爲NSTimeInterval「,serverTime是一個有效的日期。 –

+1

@BryanH你可以顯示你的日期字符串樣本 –

回答

2

嗯,這是愚蠢的,

NSDate().timeIntervalSinceDate(serverTime)  

NSDate.timeIntervalSinceDate(serverTime)  
2

你也應該格式化你的日期如下:

let dateString = "2015-09-15T00:01:44.8530546-06:00" 
let dateFormatter = NSDateFormatter() 
dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601) 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSxxx" 
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
if let serverTime = dateFormatter.dateFromString(dateString){ 
    serverTime // "Sep 15, 2015, 3:01 AM" 
} 

enter image description here

+1

多年來一直使用小寫字母「yyyy」。 (*你*應該知道:) –

+0

@MartinR我不敢相信我沒有注意到 –

+1

感謝您的幫助。我的格式化器在某種程度上工作。我的答案如下。我投了你的答案,但不能接受它。 –