Est-ce que quelqu'un sait comment convertir une date JSON (cochée) en NSDate dans Objective-C? Quelqu'un peut-il poster du code?Conversion de la date JSON (cochée) en NSDate
Répondre
Je devine ici, mais votre valeur JSON est le nombre de millisecondes depuis 1970, non? Vous pouvez utiliser la méthode dateWithTimeIntervalSince1970:
de NSDate pour renvoyer un objet NSDate avec l'heure correcte. Assurez-vous juste de convertir le nombre de millisecondes JSON en secondes avant de le passer à NSDate-- Cocoa utilise NSTimeInterval dans la plupart des endroits, ce qui représente un intervalle en secondes.
Vous devez détecter les paramètres régionaux du client pour pouvoir le faire, et à moins que votre client ne sache comment procéder, il n'y a probablement pas grand intérêt.
Description de NSDateWithLocale: correspond à la façon dont vous le formatez pour un autre environnement local. Et timeIntervalSince1970 retournera aux (secondes) depuis 1970, que vous pourriez multiplier par 1000 pour que ms retourne au client. Tout est dans la documentation NSDate.
Il va à peu près comme ceci:
// Input string is something like: "/Date(1292851800000+0100)/" where
// 1292851800000 is milliseconds since 1970 and +0100 is the timezone
NSString *inputString = [item objectForKey:@"DateTimeSession"];
// This will tell number of seconds to add according to your default timezone
// Note: if you don't care about timezone changes, just delete/comment it out
NSInteger offset = [[NSTimeZone defaultTimeZone] secondsFromGMT];
// A range of NSMakeRange(6, 10) will generate "1292851800" from "/Date(1292851800000+0100)/"
// as in example above. We crop additional three zeros, because "dateWithTimeIntervalSince1970:"
// wants seconds, not milliseconds; since 1 second is equal to 1000 milliseconds, this will work.
// Note: if you don't care about timezone changes, just chop out "dateByAddingTimeInterval:offset" part
NSDate *date = [[NSDate dateWithTimeIntervalSince1970:
[[inputString substringWithRange:NSMakeRange(6, 10)] intValue]]
dateByAddingTimeInterval:offset];
Cette solution est fragile. Cela fonctionne seulement si le nombre a exactement 13 chiffres (ou 10, si vous laissez tomber les microsecondes). Cela ne fonctionnera pas pour toutes les dates avant septembre 2001. –
Martin, vous avez raison. J'espère que le lien Gist référencé vous fournira plus de contexte. – Ali
Selon cette page: http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx tiques commencent le 1er janvier 0001 si dateWithTimeIntervalSince1970:
est la configuration pas automatiquement travailler avec des tiques. Vous pouvez toujours utiliser cette méthode, mais vous devez ajuster la différence.
- 1. format de date HTTP NSDate
- 2. Conversion JSON en javascript
- 3. Comment puis-je obtenir la date suivante en utilisant NSDate?
- 4. Conversion de HTML en Django Fixture (JSON)
- 5. Types de superposition GWT, conversion en JSON
- 6. Conversion de format de date en SQL
- 7. Conversion de données de texte en date
- 8. Jython date de conversion
- 9. Est-ce que quelqu'un sait comment convertir NSDate en date (ticks)?
- 10. Description Chaîne de NSDate
- 11. C# Parse json Date?
- 12. Conversion de XML-RPC en JSON en JavaScript
- 13. NSDate hors de portée
- 14. Conversion d'une chaîne de date
- 15. Conversion d'une chaîne en date dans Access
- 16. VB conversion date
- 17. UIDatePicker et NSDate
- 18. Date Conversion d'heure
- 19. émet NSDate et NSDateFormatter
- 20. Conversion de xml à json roundtrip
- 21. Conversion de date de la base de données à l'affichage
- 22. UIDatePicker et NSDate
- 23. Comment analyser le format de date JSON en Perl?
- 24. Comment puis-je obtenir la date mais pas l'heure à partir de NSDate
- 25. Conversion de chaîne en type Date non valide erreur
- 26. Blackberry Java Chaîne de conversion de date
- 27. Préserver la hiérarchie lors de la conversion du fichier .csv en xml ou json
- 28. Conversion d'unicode pour MySQL et JSON
- 29. Date de conversion dans SQLServer et Access
- 30. Trier NSArray par NSDate, aujourd'hui
Merci Marc. Cela a fonctionné pour moi. Savez-vous comment afficher le NSDate dans le fuseau horaire local du client? –
Aussi, savez-vous comment aller de NSDate back Date (ticks) pour préparer l'objet JSON à envoyer à un service web .net? –