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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top