Je veux obtenir le timestamp actuel comme ceci:
636110767775716756
Cependant, quand je le fais:
NSDate().timeIntervalSince1970
Il retourne une valeur comme celle-ci:
1475491615.71278
Comment puis-je accéder aux ticks d'horodatage actuels dans le format souhaité? Je vérifie les dates de ici:
Vous semblez chercher quoi DateTime.Ticks
est en C #, c’est-à-dire le temps écoulé depuis le 0001-01-01, mesuré à des intervalles de 100 nanosecondes.
Le code de votre lien fourni Swift: convertir NSDate en ticks c # peut être traduit en Swift facilement:
// Swift 2:
extension NSDate {
var ticks: UInt64 {
return UInt64((self.timeIntervalSince1970 + 62_135_596_800) * 10_000_000)
}
}
// Swift 3:
extension Date {
var ticks: UInt64 {
return UInt64((self.timeIntervalSince1970 + 62_135_596_800) * 10_000_000)
}
}
Exemple (Swift 3):
let ticks = Date().ticks
print(ticks) // 636110903202288256
ou sous forme de chaîne:
let sticks = String(Date().ticks)
print(sticks)
Et tant qu’on y est, la conversion inverse des ticks en Date
serait
// Swift 2:
extension NSDate {
convenience init(ticks: UInt64) {
self.init(timeIntervalSince1970: Double(ticks)/10_000_000 - 62_135_596_800)
}
}
// Swift 3:
extension Date {
init(ticks: UInt64) {
self.init(timeIntervalSince1970: Double(ticks)/10_000_000 - 62_135_596_800)
}
}
Exemple (Swift 3):
let date = Date(ticks: 636110903202288256)
Voici une solution que je trouve très élégante. J'ai étendu NSDate (bien que Date soit maintenant dans Swift 3) pour inclure une fonction toMillis () qui vous donnera la valeur Int64 de l'objet de date avec lequel vous travaillez.
extension Date {
func toMillis() -> Int64! {
return Int64(self.timeIntervalSince1970 * 1000)
}
}
Usage:
let currentTimeStamp = Date().toMillis()
À votre santé
Dans Swift:
si vous voulez en faire une variable globale, voyez le code ci-dessous:
var Timestamp: String {
return "\(NSDate().timeIntervalSince1970 * 1000)"
}
Ensuite, vous pouvez l'appeler
println("Timestamp: \(Timestamp)")
Le * 1000 est pour millisecondes, si vous préférez, vous pouvez le supprimer. Si le garder comme un NSTimeInterval.
var Timestamp: NSTimeInterval {
return NSDate().timeIntervalSince1970 * 1000
}
en objectif C:
Si vous souhaitez déclarer une constante symbolique, reportez-vous au code ci-dessous:
#define TimeStamp [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000]
Puis appelez comme ça:
NSString * timestamp = TimeStamp;
Ou créez une méthode globale:
- (NSString *) timeStamp {
return [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000];
}
Avoir une note: Le 1000 est de convertir l'horodatage en millisecondes. Vous pouvez l'enlever si vous préférez timeInterval en secondes.