ios - NSDateFormatter 在比较 Xcode 6.3.2 中的两个日期时出现错误的毫秒差异

标签 ios objective-c date

NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *dateStr = [NSString stringWithFormat:@"%@",[[cachedPostArray objectAtIndex:0] objectForKey:@"date_time"]];

NSDate *dtTime1 = [dateFormat dateFromString:dateStr];            
double timeInMS1 =(long) (floor([[NSDate date] timeIntervalSince1970]) * 1000 );
double timeInMS2 =(long) (floor([dtTime1 timeIntervalSince1970]) * 1000 );

NSString *diffTimestamp = [NSString stringWithFormat:@"%f",timeInMS1 - timeInMS2];

我正在传递 dateStr = 2015-06-18 18:37:57 与当前日期时间进行比较。 始终以毫秒为单位获得差异 0。

最佳答案

因为你floor早期的值:

double timeInMS1 =(long) (floor([[NSDate date] timeIntervalSince1970]) * 1000 );
double timeInMS2 =(long) (floor([dtTime1 timeIntervalSince1970]) * 1000 );

实际上应该没有 floor 或没有类型转换和 floor 稍后(在乘以 1000 之后):

double timeInMS1 = floor([[NSDate date] timeIntervalSince1970] * 1000 );
double timeInMS2 = floor([dtTime1 timeIntervalSince1970] * 1000 );

你现在做的是得到秒数和小数点后的毫秒数,然后你删除毫秒数,然后你乘以1000。这太晚的。

或者,正如 rmaddy 正确建议的那样,首先使用 long:

long timeInMS1 = [[NSDate date] timeIntervalSince1970] * 1000;
long timeInMS2 = [dtTime1 timeIntervalSince1970] * 1000;

关于ios - NSDateFormatter 在比较 Xcode 6.3.2 中的两个日期时出现错误的毫秒差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30919017/

相关文章:

ios - 无法调用非函数类型的值(声明为 var)

iphone - Objective-C 中的公共(public)范围?

php mysql date.utc 并统计出现次数

objective-c - ios mapkit 通过点击 map 关闭注释标注

objective-c - 在购买的应用程序中无法实时运行

python - 根据日期对 CSV 文件进行排序

java - 如何使用java将日期和时间发送到SQL

ios - Collectionview 中显示多个 Parse.com 行图像?

ios - 背景图像在 UTesting 期间导致内存警告和崩溃

iphone - applicationWillResignActive 和 setBrightness 不起作用?