NSNumber * uniqueId = [NSNumber numberWithInt:([[NSDate date] timeIntervalSince1970])];
毫秒不包含在上面的代码中。如果我使用如下代码,则打印负值。
NSNumber * uniqueId1 = [NSNumber numberWithInt:([[NSDate date] timeIntervalSince1970] * 1000)];
我们可以得到毫秒的时间戳作为int ????
@AnjaniG你可以使用其中一个..
NSString *strTimeStamp = [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000];
int timestamps = [strTimeStamp intValue];
NSLog(@"number int = %d",timestamps);
你不应该使用Int
,[[NSDate date] timeIntervalSince1970] * 1000
比INT_MAX
大。您应该使用long long
来存储值。
NSNumber * uniqueId1 = [NSNumber numberWithLongLong:([[NSDate date] timeIntervalSince1970] * 1000)];
问题是您正在将浮点转换为整数。
作为per the documentation,timeIntervalSince1970
返回NSTimeInterval
,which is a double,而不是整数。
最后,你只是做了太多的代码,你不应该真的担心这个。
NSTimeInterval interval = [NSDate date].timeIntervalSince1970;
NSNumber *timestamp = @(interval * 1000.);
在这里,我使用正确记录的NSTimeInterval
类型。然后我将它乘以1,000以将秒数更改为毫秒。最后,我使用Clang literal syntax指示编译器创建适当的NSNumber
。