以毫秒为单位获取当前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 } }