dateFromString verhält sich im Simulator und Device unterschiedlich

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • dateFromString verhält sich im Simulator und Device unterschiedlich

      ich hab mal wieder ein seltsames Verhalten.

      ich muss zwei File-Datum vergleichen. Ein File steht local bei mir im iPad, das andere auf einem Server.


      C-Quellcode

      1. NSDictionary *dictionary = [response allHeaderFields];
      2. NSString *serverDate = [dictionary valueForKey:@"Last-Modified"];
      3. NSDateFormatter *fileDateFormatter = [[NSDateFormatter alloc] init];
      4. [fileDateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];
      5. NSDate *lastUpdatedServer = [fileDateFormatter dateFromString:serverDate];
      im Simulator funktioniert das ohne Probleme . In serverDate steht ein ordentlicher Wert: @"Fri, 23 Feb 2018 14:15:23 GMT"
      in lastUpdatedServer steht dann auch ein ordentliches Datum für die Weiterverarbeitung.

      Im Device (iPad pro 9,7) holt er sich auch ordentlich das Datum vom Server-File (überprüft im Debugger)
      Aber dann wird lastUpdatedServer zu nil ?(
      Also konkret:
      die Zeile
      NSDate *lastUpdatedServer = [fileDateFormatter dateFromString:serverDate];
      funktioniert im Simulator, aber im Device nicht!

      ich hab dann zu Testzwecken einen festen String verwendet: NSDate *lastUpdatedServer =[fileDateFormatter dateFromString:@"Fri, 23 Feb 2018 14:08:04 GMT"];
      auch da steht dann nil drin

      Wo liegt mein Denkfehler?
      Ich habe auch keine Loesung, aber ich bewundere das Problem!
      _____________________________________________________


      Hape42
    • Ich tippe mal, dass Simulator und Device eine unterschiedliche Einstellung bei Language & Region haben. Der Simulator wird sicherlich noch auf English stehen wohingegen Dein Device bestimmt auf Deutsch eingestellt ist. ;)

      Setzte im NSDateFormatter mal eine passende Locale zu dem Format des Date Strings, also z.B.

      C-Quellcode

      1. [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
      Dann sollte es auch auf dem Device mit dem Date String "Fri, 23 Feb 2018 14:08:04 GMT" klappen. ;)
    • Vor allem arbeite doch nicht mit so kryptischen Formaten. Der Server sollte das Datum am besten als utc timestanp oder meinetwegen im SQL Datetime Format liefern. Es ist Sache des Clients daraus die Ortszeit zu machen denn nur der weis wo er ist. Sonst bekommt ja jemand in USA die gleiche Zeit wie jemand hier
      2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

      Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)