[英]How to get time difference in minutes in Swift 2.0
雖然這個問題與時差有關,但我認為我可能有一個與異步/關閉相關的問題。
所以我有一個dateTime來自我的iOS應用中通過Alamofire的網絡服務器。 我做如下比較:
let recordedDate = obj[0]["time"].stringValue //TIME FROM SERVER
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let date = dateFormatter.dateFromString(recordedDate)
let elapsedTime = (Int(NSDate().timeIntervalSinceDate(date!)) / 60 / 60)
//THE PROBLEM IS THAT date IS NIL.
if elapsedTime > 1{
self.isActiveLabel.text = "Offline"
}else{
self.isActiveLabel.text = "Active"
}
因此,從我的疑難解答中,看來在計算經過的時間時日期尚未完成處理,因此返回了“發現無”問題。
該問題不會在模擬器上發生,因此可以排除日期確實為空的可能性。 問題僅在設備上部署后才會發生。 日期准備好后如何運行epalsedTime? 還是有更好的實踐來實現這一目標。
任何智慧或指導表示贊賞。
謝謝
如果我正確理解您的問題,基本上是:
dateFormatter.dateFromString("2016-06-22 01:03:06 +0000")
返回nil
。
如果是這種情況,那是因為日期格式不匹配:
yyyy-MM-dd HH:mm:ss Z => 2016-06-22 01:03:06 +0000
yyyy-MM-dd HH:mm:ss => 2016-06-22 01:03:06
嘗試下面的代碼來處理兩種可能的格式:
+ (NSDate *)dateFromDateString:(NSString *)dateString {
NSDate *date = nil;
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setLocale:[NSLocale currentLocale]];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"]; // or something else
[dateFormat setTimeZone:timeZone];
// Try two ways to cover the web server return
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
date = [dateFormat dateFromString:dateString];
if (date == nil) {
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
date = [dateFormat dateFromString:dateString];
}
return date;
}
好的,所以對於我的問題,我要做的就是添加以下內容:
dateFormatter.locale = NSLocale(localeIdentifier: "us")
在那之后,它運行完美。 這是嘗試和錯誤。 如果有人能解釋為什么? 我很樂意將其標記為可接受的答案。
謝謝大家的指導。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.