使用Objective-C将时间戳解析为日期和时间时出现问题

时间:2016-04-04 05:49:39

标签: objective-c ios8 nsdate nstimeinterval nsinteger

timestamp位于stringFormat的服务器位置miliseconds

我必须在日期和时间转换它并显示给用户。

我使用以下代码完成了它:

    + (NSString *)getDateAndMonthFromTimeStamp:(NSString*)timestampString
{
NSTimeInterval timeStamp = [timestampString integerValue]/1000;

NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeStamp];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];

[dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];

[dateFormatter setDateFormat:@"dd MMM"];

 NSString *dateNmonth =  [[dateFormatter stringFromDate:date]uppercaseString];

return dateNmonth;
}

当我在iPhone6中运行它时工作正常。但是当我在iPhone 5和iPhone5s中运行它时,它会向我显示不需要的日期。

我调试代码并找到了:

  timestampString = @"1459498716000"

  NSTimeInterval timeStamp = [timestampString integerValue]/1000; 
 //after this timeStamp becomes:
  timeStamp = 2147483;

然后我的约会成为1970-01-25 20:31:23 +0000

我怀疑NSTimeinterval是否有数据溢出。这是对的吗?

我该如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

试试这段代码

NSString* takeOffTime = @"1396614600000"; 
double miliSec = takeOffTime.doubleValue; 
NSDate* takeOffDate = [NSDate dateWithTimeIntervalSince1970:miliSec/1000];