Je prends l'heure actuelle, en UTC, et je la mets en nanosecondes, puis je dois prendre les nanosecondes et revenir à une date en heure locale.
Je parviens à obtenir l'heure en nanosecondes, puis à revenir à une chaîne de date, mais l'heure devient compliquée lorsque je passe d'une chaîne à une date.
//Date to milliseconds
func currentTimeInMiliseconds() -> Int! {
let currentDate = NSDate()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone!
let date = dateFormatter.date(from: dateFormatter.string(from: currentDate as Date))
let nowDouble = date!.timeIntervalSince1970
return Int(nowDouble*1000)
}
//Milliseconds to date
extension Int {
func dateFromMilliseconds(format:String) -> Date {
let date : NSDate! = NSDate(timeIntervalSince1970:Double(self) / 1000.0)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
dateFormatter.timeZone = TimeZone.current
let timeStamp = dateFormatter.string(from: date as Date)
let formatter = DateFormatter()
formatter.dateFormat = format
return ( formatter.date( from: timeStamp ) )!
}
}
L'horodatage est correct mais la date renvoyée ne l'est pas.
3 votes
Quel est l'intérêt de convertir une date en chaîne de caractères et de revenir à la date (en
currentTimeInMiliseconds()
) ?0 votes
L'entreprise pour laquelle je travaille stocke toutes les dates en millisecondes
2 votes
Mais à quoi sert la double conversion date -> chaîne -> date et quelle est l'utilité de la double conversion date -> chaîne -> date ?
format
qui manque dans le code ?0 votes
Je ne comprends pas ce que vous essayez de dire. J'utilise currentTimeToMilliseconds pour envoyer des dates UTC au serveur. Ensuite, j'utilise dateFromMilliseconds pour revenir à une date courante lorsque le serveur envoie des heures.
4 votes
Vous convertissez une date en chaîne de caractères et revenez à la même date, ce qui semble inutile. Encore une fois, quel est le format de date utilisé
format
? En faitInt(Date().timeIntervalSince1970 * 1000)
peut remplacer l'ensemble de la fonction.NSDate
est simplement une valeur double sans tenir compte du fuseau horaire5 votes
Vous semblez utiliser nanosecondes dans votre question alors que vous semblez vouloir dire millisecondes . Il y a 1 million de nanosecondes dans une milliseconde, il ne s'agit donc pas d'une erreur sans conséquence.