我使用以下代码将值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;
}
答案 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