使用NSdateformatter返回错误答案,双倍转换为小时分和秒

时间:2013-01-03 18:33:18

标签: ios nsdateformatter

我使用以下代码将值18900转换为hh:mm:ss

不幸的是,返回的值似乎不正确,因为它给了我06:15:00

任何人都可以告诉它为什么会出错

感谢

-(NSString*)setHours:(double)result
{

NSLog(@"result %0.2f",result);
NSDate *date = [NSDate dateWithTimeIntervalSince1970:result];
                NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
                [formatter setDateFormat:@"hh:mm:ss"];
                 NSString *localizedString = [formatter stringFromDate:date];
                [formatter release];
                return localizedString;

}

4 个答案:

答案 0 :(得分:4)

由于您的值是自午夜以来的秒数,因此您不需要日期格式化程序。试试这个:

-(NSString*)setHours:(double)result {
    int secs = result;
    int h = secs / 3600;
    int m = secs / 60 % 60;
    int s = secs % 60;

    NSString *text = [NSString stringWithFormat:@"%02d:%02d:%02d", h, m, s];
}

答案 1 :(得分:2)

[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

答案 2 :(得分:1)

首先,你必须通过将毫秒除以1000来将毫秒转换为秒。

   NSTimeInterval result= 18900/1000;
   NSDate *date = [NSDate dateWithTimeIntervalSince1970:result];
   NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
   [formatter setDateFormat:@"HH:mm:ss"];
   NSString *formattedDate=[formatter stringFromDate:date];
   NSLog(@"Formatted Date : %@",formattedDate);

答案 3 :(得分:1)

它会为您提供当前时区的结果,时间以UTC格式指定。所以,我想在格林尼治标准时间之后一小时。

查看此问题:NSDate dateWithTimeIntervalSince1970 NOT returning GMT/UTC time