【问题标题】:Issue while parsing timestamp into date and time using Objective-C使用 Objective-C 将时间戳解析为日期和时间时出现问题
【发布时间】:2016-07-23 13:31:02
【问题描述】:

我正在为stringFormat 中的服务器获取timestamp,它位于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 是否有数据溢出。是这样吗?

我该如何解决这个问题。

【问题讨论】:

  • 以双精度数据类型存储时间戳值
  • @DarjiJigar 使用 double 并没有解决我的问题。
  • 如果你在 json 字符串中获取时间戳数据,而不是你为什么在 nstimeinterval 中转换
  • 应用此代码 NSString* takeOffTime = @"1396614600000";双 miliSec = takeOffTime.doubleValue; NSDate* takeOffDate = [NSDate dateWithTimeIntervalSince1970:miliSec/1000];
  • 对不起,它以错误的方式使用双精度..现在双精度工作正常

标签: objective-c ios8 nsdate nstimeinterval nsinteger


【解决方案1】:

试试这个代码

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

【讨论】:

    猜你喜欢
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    相关资源
    最近更新 更多