Comment convertir un NSDate
horodatage en Unix? J'ai lu de nombreux articles qui font l'inverse. Mais je ne trouve rien en rapport avec ma question.
143
Comment convertir un NSDate
horodatage en Unix? J'ai lu de nombreux articles qui font l'inverse. Mais je ne trouve rien en rapport avec ma question.
Je crois que c'est le sélecteur NSDate que vous recherchez:
- (NSTimeInterval)timeIntervalSince1970
Un horodatage Unix est le nombre de secondes depuis 00:00:00 UTC le 1er janvier 1970. Il est représenté par le type time_t , qui est généralement un type entier 32 bits signé (long ou int).
iOS fournit - (NSTimeInterval) timeIntervalSince1970 pour les objets NSDate qui renvoie le nombre de secondes depuis 00:00:00 GMT le 1er janvier 1970. NSTimeInterval est un type à virgule flottante double, vous obtenez donc les secondes et les fractions de seconde.
Puisqu'ils ont tous les deux la même référence (minuit 1Jan1970 UTC) et sont tous les deux en secondes, la conversion est facile, convertissez le NSTimeInterval en time_t, arrondi ou tronqué selon vos besoins:
la source
int unixTime = floor([piece.piece_last_view timeIntervalSince1970])
où piece.piece.last_view est un NSDateVous pouvez créer une date d'horodatage unix à partir d'une date de cette façon:
la source
REMARQUE: - L'horodatage doit être dans la zone UTC, donc je convertis notre heure locale en heure UTC.
la source
Rapide
Mis à jour pour Swift 3
Remarques
timeIntervalSince1970
renvoieTimeInterval
, qui est un typealias pourDouble
.Si vous vouliez aller dans l'autre sens, vous pourriez faire ce qui suit:
la source
Si vous souhaitez stocker ces heures dans une base de données ou les envoyer sur le serveur ... le mieux est d'utiliser les horodatages Unix. Voici un petit extrait pour l'obtenir:
la source
[[NSTimeZone systemTimeZone] secondsFromGMT]]
:? Veuillez expliquer peu.Ma méthode préférée est simplement:
la source
Selon la suggestion de @ kexik en utilisant la fonction de temps UNIX comme ci-dessous:
.Selon mon expérience - n'utilisez pas timeIntervalSince1970, cela donne l'horodatage de l'époque - le nombre de secondes que vous êtes derrière GMT.Il y avait un bogue avec [[NSDate date] timeIntervalSince1970], il ajoutait / soustrait l'heure en fonction du fuseau horaire du téléphone mais il semble être résolu maintenant.
la source
premier unixtime 1532278070
deuxième unixtime 1532278070.461380
troisième unixtime 1532278070
la source
Si vous avez besoin d'un horodatage sous forme de chaîne.
la source