在毫秒中将日期从毫秒格式转换为普通格式

时间:2014-01-11 10:34:16

标签: ios iphone objective-c nsdate milliseconds

我以毫秒格式从数据库中获取日期。我将该日期转换为正常日期格式。但是它返回错误的日期。一次请给我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"];

3 个答案:

答案 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];