comportamento estranho com timeIntervalSince1970
-
06-09-2019 - |
Pergunta
Eu estou vendo um comportamento estranho com a tentativa de obter segundos desde época na objetivo C. Este:
NSString *nowTimestamp = [NSString stringWithFormat:@"%d",
[[NSDate date] timeIntervalSince1970]];
Saídas 15907296, quando o timestamp atual deve ser 1243555623 (2009/05/28 @ 7:08 pm EST). A hora do sistema no iPhone está correto. Eu não consigo descobrir para a vida de mim o que eu estou fazendo errado. Quaisquer recomendações?
Solução
timeIntervalSince1970 retorna um NSTimeInterval, que é um typedef para o dobro; % D não é o formatador direita para imprimir uma dupla (você quer% f).
Outras dicas
Como o retorno de [[NSDate date] timeIntervalSince1970];
é uma dupla, você pode tentar o seguinte:
NSString *nowTimestamp = [NSString stringWithFormat:@"%f",
[[NSDate date] timeIntervalSince1970]];
Você tem certeza que o resultado de NSDate
é um int decimal? Os médicos dizem que é um duplo. Você poderia tentar casting.
Além disso, às vezes você vai ter um valor de ponteiro de volta em vez do valor real, se algo é um NSNumber
debaixo das cobertas, você pode precisar usar intValue
, ou doubleValue
para obter o conteúdo real do que está no endereço.