使用 Objective-C 将时间戳解析为日期和时间时出现问题
Issue while parsing timestamp into date and time using Objective-C
我正在为 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
是否溢出了数据。这样对吗?
我该如何解决这个问题。
试试这个代码
NSString* takeOffTime = @"1396614600000";
double miliSec = takeOffTime.doubleValue;
NSDate* takeOffDate = [NSDate dateWithTimeIntervalSince1970:miliSec/1000];
我正在为 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
是否溢出了数据。这样对吗?
我该如何解决这个问题。
试试这个代码
NSString* takeOffTime = @"1396614600000";
double miliSec = takeOffTime.doubleValue;
NSDate* takeOffDate = [NSDate dateWithTimeIntervalSince1970:miliSec/1000];