以毫秒为单位获取当前date

任何一个可以给我一个想法如何以毫秒为单位获取当前date?

有几种方法可以做到这一点,尽pipe我个人最喜欢的是:

CFAbsoluteTime timeInSeconds = CFAbsoluteTimeGetCurrent(); 

你可以在这里阅读更多关于这个方法。 你也可以创build一个NSDate对象,并通过调用timeIntervalSince1970来获得时间,它返回1970年1月1日以来的秒数 :

 NSTimeInterval timeInSeconds = [[NSDate date] timeIntervalSince1970]; 

干杯,帕维尔

直接把NSTimeInterval投给我很长时间,所以我只好投了很长时间。

 long long milliseconds = (long long)([[NSDate date] timeIntervalSince1970] * 1000.0); 

结果是在Unix中有一个13位数的时间戳。

 NSTimeInterval milisecondedDate = ([[NSDate date] timeIntervalSince1970] * 1000); 

你可以这样做:

 long currentTime = (long)(NSTimeInterval)([[NSDate date] timeIntervalSince1970]); 

这将返回一个值毫秒,所以如果你乘以1000的结果(如我build议我的Eimantas),你会溢出长型,它会导致一个负值。

例如,如果我现在运行该代码,它会导致

 currentTime = 1357234941 

 currentTime /seconds / minutes / hours / days = years 1357234941 / 60 / 60 / 24 / 365 = 43.037637652207 
 extension NSDate { func toMillis() -> NSNumber { return NSNumber(longLong:Int64(timeIntervalSince1970 * 1000)) } static func fromMillis(millis: NSNumber?) -> NSDate? { return millis.map() { number in NSDate(timeIntervalSince1970: Double(number) / 1000)} } static func currentTimeInMillis() -> NSNumber { return NSDate().toMillis() } } 

@JavaZava你的解决scheme是好的,但是如果你想要有一个13位长的值与Java或JavaScript(和其他语言)中的时间戳格式一致,使用这个方法:

 NSTimeInterval time = ([[NSDate date] timeIntervalSince1970]); // returned as a double long digits = (long)time; // this is the first 10 digits int decimalDigits = (int)(fmod(time, 1) * 1000); // this will get the 3 missing digits long timestamp = (digits * 1000) + decimalDigits; 

或者(如果你需要一个string):

 NSString *timestampString = [NSString stringWithFormat:@"%ld%d",digits ,decimalDigits]; 

将NSTimeInterval的NSTimeInterval值转换为nsstring ,之后转换为int

您可以使用以下方法以毫秒为单位获取当前date。

 [[NSDate date] timeIntervalSince1970]; 

要么

 double CurrentTime = CACurrentMediaTime(); 

来源: iPhone:如何获得当前毫秒?

 - (void)GetCurrentTimeStamp { NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init]; [objDateformat setDateFormat:@"yyyy-MM-dd"]; NSString *strTime = [objDateformat stringFromDate:[NSDate date]]; NSString *strUTCTime = [self GetUTCDateTimeFromLocalTime:strTime];//You can pass your date but be carefull about your date format of NSDateFormatter. NSDate *objUTCDate = [objDateformat dateFromString:strUTCTime]; long long milliseconds = (long long)([objUTCDate timeIntervalSince1970] * 1000.0); NSString *strTimeStamp = [NSString stringWithFormat:@"%lld",milliseconds]; NSLog(@"The Timestamp is = %@",strTimeStamp); } - (NSString *) GetUTCDateTimeFromLocalTime:(NSString *)IN_strLocalTime { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; NSDate *objDate = [dateFormatter dateFromString:IN_strLocalTime]; [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; NSString *strDateTime = [dateFormatter stringFromDate:objDate]; return strDateTime; } 

用这个来获取以毫秒(long)(NSTimeInterval)([[NSDate date] timeIntervalSince1970])

约会的延期可能是最好的方式。

 extension NSDate { func msFromEpoch() -> Double { return self.timeIntervalSince1970 * 1000 } }