IOS如果转换十三位的时间戳?
PHPz
PHPz 2017-04-17 17:37:57
0
4
459

如果从服务器传回的数据是13位的时间戳 怎么转换为时间呢?

PHPz
PHPz

学习是最好的投资!

répondre à tous(4)
刘奇

Nous avons également rencontré le même problème. L'horodatage affiché par le serveur utilisant Java (Jersey Jackson) est de 13 chiffres, alors que l'exigence iOS est de 10 chiffres...

La réponse de Stackoverflow est la suivante : les horodatages Java sont précis à la milliseconde près, soit 13 chiffres.

Pour ce que ça vaut, ce nombre est l'horodatage Java standard (utilisé par les classes JDK) ; il stocke les secondes, les millisecondes Java, c'est pourquoi sa valeur est un peu plus grande.

Un autre post apporte une solution

Diviser par 1000

L'exemple de code est le suivant :

double timestampval =  [[updates objectForKey:@"timestamp"] doubleValue]/1000;
NSTimeInterval timestamp = (NSTimeInterval)timestampval;
NSDate *updatetimestamp = [NSDate dateWithTimeIntervalSince1970:timestamp];
伊谢尔伦
    NSString * timeStampString = @"1423189125874";
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:[timeStampString doubleValue] / 1000];
    NSLog(@"%f", ([date timeIntervalSince1970] * 1000.0));

Sortie

2015-02-06 10:51:35.323 iOSTest[4359:67092] 1423189125874.000000

NSTimeInterval est de type double, donc diviser par 1000 ne perdra pas en précision.

左手右手慢动作
NSString * timeStampString = @"1423189125873";
NSTimeInterval _interval=[[timeStampString substringToIndex:10] doubleValue];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interval];
NSLog(@"%@", date);

======================

Millisecondes de réserve

NSString * timeStampString = @"1423189125873";
NSTimeInterval _interval=[timeStampString doubleValue] / 1000.0;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interval];
NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init];
[objDateformat setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
NSLog(@"%@", [objDateformat stringFromDate: date]);
小葫芦

Divisé par 1000

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal