1

我正在使用以下代码将值 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

4 回答 4

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];
}
于 2013-01-03T18:49:14.823 回答
2
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
于 2013-01-03T18:46:38.287 回答
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);
于 2013-01-03T18:39:21.440 回答
1

它为您提供当前时区的结果,时间以 UTC 指定。所以我想你是格林威治标准时间后一个小时。

看看这个问题:NSDate dateWithTimeIntervalSince1970 NOT return GMT/UTC time

于 2013-01-03T18:42:00.500 回答