Ios NSDateFormatter在比较Xcode 6.3.2中的两个日期时出错毫秒差异

Ios NSDateFormatter在比较Xcode 6.3.2中的两个日期时出错毫秒差异,ios,objective-c,date,Ios,Objective C,Date,与当前日期时间相比,我正在传递日期str=2015-06-18 18:37:57。 始终以毫秒为单位获得差异0。因为您将值提前设置为: NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init]; [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSString *dateStr = [NSString stringWithFormat:@"%@",[[cachedPostArray

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

因为您将值提前设置为:

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];
实际上应该没有
地板
,或者以后没有演员阵容和
地板
(乘以1000后):

您当前要做的是获取小数点后的秒数和毫秒数,然后
删除
毫秒数,然后乘以1000。那太晚了

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

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

timeInMS1
timeInMS2
的值是什么?
[[cachedPostArray objectAtIndex:0]objectForKey:@“date\u time”]
返回什么?为什么要将字符串格式化为字符串,而只有一个参数是字符串?只需移动
stringWithFormat
@luk2302或简单地说:NSString*dateStr=cachedPostArray[0][@“date_time”]@zaph这就是我的意思,是的。因为目标是获得整数毫秒,所以根本不必费心于
floor
,将
timeInMS1
timeInMS2
更改为
long
,而不是
double
@rmaddy对了。。。编辑后包含了这一点,这是否符合你的建议?不需要演员阵容。编译器将自动将
double
值转换为
long
。但它会警告您,不喜欢警告!?我想这取决于你的编译器设置。我总是编译干净(我将警告视为错误),但我没有收到关于这种隐式转换的警告(至少我认为我没有)。我得检查一下。如果需要,应使用显式强制转换。
double timeInMS1 = floor([[NSDate date] timeIntervalSince1970] * 1000 );
double timeInMS2 = floor([dtTime1 timeIntervalSince1970] * 1000 );
long timeInMS1 = [[NSDate date] timeIntervalSince1970] * 1000;
long timeInMS2 = [dtTime1 timeIntervalSince1970] * 1000;