我以毫秒格式从数据库中获取日期。我将该日期转换为正常日期格式。但是它返回错误的日期。一次请给我ios中的解决方案
以毫秒为单位的日期为1385856000000
转换那个日期后我将于10月26日收到。
但实际日期是12/1/2013。
我正在使用以下代码
int dobint = [secondChangeDob intValue];
NSTimeInterval timeInSecond = dobint/1000;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInSecond];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM/dd/yyyy"];
NSString *formattedDate=[formatter stringFromDate:date];
NSLog(@"Formatted Date : %@",formattedDate);
NSUserDefaults *dateDef = [NSUserDefaults standardUserDefaults];
[dateDef setObject:formattedDate forKey:@"bDATE"];
答案 0 :(得分:6)
您的 secondChangeDob 作为 int 不会使用这样的值,因为 int 太小而无法保存您的值存储在 NSNumber 。
NSTimeInterval 的类型为 double ,因此您可以尝试 -
NSTimeInterval timeInSecond = [secondChangeDob doubleValue]/1000.0;
NSNumber 有一种方法可以返回名为 doubleValue 的 double 。上面的代码将 secondChangeDob 作为 double 返回,以便在将结果存储为 NSTimeInterval 时不会出现类型转换问题。
答案 1 :(得分:2)
int太小而无法容纳1385856000000
所以号码被破坏了
使用例如一个无符号的长多或只是双
答案 2 :(得分:-1)
你可以这样做:
NSDate * myDate = [NSDate dateWithTimeIntervalSince1970:1385856000000];
和
NSDate * myDate = [NSDate dateWithTimeIntervalSinceReferenceDate:13858.56亿];
和
NSDate * myDate = [NSDate dateWithTimeIntervalSinceNow:1385856000000];