簡體   English   中英

如何在Swift 2.0中以分鍾為單位獲取時差

[英]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")

在那之后,它運行完美。 這是嘗試和錯誤。 如果有人能解釋為什么? 我很樂意將其標記為可接受的答案。

謝謝大家的指導。

參考: NSDateFormatter在swift和iOS SDK 8.0中返回nil

如何在 swift 4

[英]How to skip the rounding of the time when it is coming exact hours and minutes in swift 4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM