Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSS秒到小时、分钟、秒的数量_Objective C_Cocoa_Nsnumber - Fatal编程技术网

Objective c NSS秒到小时、分钟、秒的数量

Objective c NSS秒到小时、分钟、秒的数量,objective-c,cocoa,nsnumber,Objective C,Cocoa,Nsnumber,我正在经历一段艰难的时光,试图做一些本该简单的事情。我的NSNumber值为32025.89秒。我需要用小时,分,秒来表示。有没有一种方法可以把它吐出来?我似乎找不到合适的格式化程序 如果你不想把它分开,试试这个。就你的目的而言,它可能足够近了注意:它不考虑亚秒精度。(setSecond采用NSInteger) 如果你不想把它分开,试试这个。就你的目的而言,它可能足够近了注意:它不考虑亚秒精度。(setSecond采用NSInteger) 您是否尝试过从中创建一个NSDate,并使用NSDate

我正在经历一段艰难的时光,试图做一些本该简单的事情。我的NSNumber值为32025.89秒。我需要用小时,分,秒来表示。有没有一种方法可以把它吐出来?我似乎找不到合适的格式化程序

如果你不想把它分开,试试这个。就你的目的而言,它可能足够近了注意:它不考虑亚秒精度。(
setSecond
采用
NSInteger


如果你不想把它分开,试试这个。就你的目的而言,它可能足够近了注意:它不考虑亚秒精度。(
setSecond
采用
NSInteger


您是否尝试过从中创建一个
NSDate
,并使用
NSDateFormatter
打印它

NSDate *date = [NSDate dateWithTimeIntervalSince1970:[theNumber doubleValue]];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
NSLog(@"%@", [formatter stringFromDate:date]); 
[formatter release];
如果需要小时、分钟和秒的单个值,请按照NAL的建议使用
NSDateComponents


如果
NSNumber
表示的天数超过一天,则上述内容将无法打印正确的金额。可能是1天1小时,只打印01:00:00。在这种情况下,您应该手动计算小时、分钟和秒。

您是否尝试过使用
NSDateFormatter
从中创建一个
NSDate

NSDate *date = [NSDate dateWithTimeIntervalSince1970:[theNumber doubleValue]];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
NSLog(@"%@", [formatter stringFromDate:date]); 
[formatter release];
如果需要小时、分钟和秒的单个值,请按照NAL的建议使用
NSDateComponents


如果
NSNumber
表示的天数超过一天,则上述内容将无法打印正确的金额。可能是1天1小时,只打印01:00:00。在这种情况下,您应该手动计算小时、分钟和秒。

这里有一种方法,除了
math.h
中的
modf()
之外,没有任何库:

float fsec = 32025.89f, frac = 0;
int milliseconds = (int)(modf(fsec, &frac) * 1000);
int isec = (int)frac;
int hours = isec / 3600;
int minutes = (isec % 3600) / 60;
int seconds = isec % 60;

这里有一种方法,除了
math.h
中的
modf()
之外,没有任何库:

float fsec = 32025.89f, frac = 0;
int milliseconds = (int)(modf(fsec, &frac) * 1000);
int isec = (int)frac;
int hours = isec / 3600;
int minutes = (isec % 3600) / 60;
int seconds = isec % 60;

NSNumber*valueForDisplay=[NSNumber NUMBER WITHDOUBLE: [显示的自我价值:时钟名称]]

NSNumber *totalDays = [NSNumber numberWithDouble:
         ([valueForDisplay doubleValue] / 86400)];
NSNumber *totalHours = [NSNumber numberWithDouble:
         (([valueForDisplay doubleValue] / 3600) -
          ([totalDays intValue] * 24))];
NSNumber *totalMinutes = [NSNumber numberWithDouble:
         (([valueForDisplay doubleValue] / 60) -
         ([totalDays intValue] * 24 * 60) -
         ([totalHours intValue] * 60))];
NSNumber *totalSeconds = [NSNumber numberWithInt:
         ([valueForDisplay intValue] % 60)];

NSNumber*valueForDisplay=[NSNumber NUMBER WITHDOUBLE: [显示的自我价值:时钟名称]]

NSNumber *totalDays = [NSNumber numberWithDouble:
         ([valueForDisplay doubleValue] / 86400)];
NSNumber *totalHours = [NSNumber numberWithDouble:
         (([valueForDisplay doubleValue] / 3600) -
          ([totalDays intValue] * 24))];
NSNumber *totalMinutes = [NSNumber numberWithDouble:
         (([valueForDisplay doubleValue] / 60) -
         ([totalDays intValue] * 24 * 60) -
         ([totalHours intValue] * 60))];
NSNumber *totalSeconds = [NSNumber numberWithInt:
         ([valueForDisplay intValue] % 60)];

这更符合我所寻找的。我知道我能学好数学,但我试图找到一种基本上为我做到这一点的方法——我想NSDateFormatter是我所需要的。谢谢。使用这个代码,我有一个用户得到了一个不正确的值-而不是180秒的03:00-他们得到了33:00。他们所在的时区比我早4.5个小时,我想知道他们所在时区的半个小时是否可能导致这种情况……这更符合我的要求。我知道我能学好数学,但我试图找到一种基本上为我做到这一点的方法——我想NSDateFormatter是我所需要的。谢谢。使用这个代码,我有一个用户得到了一个不正确的值-而不是180秒的03:00-他们得到了33:00。他们在一个4.5小时前的时区,我想知道他们时区中的半小时是否可能导致这个…我刚刚注意到你用0除以3600得到小时。那是个打字错误,对吗?你的意思是说“fsec/3600”,对吧?那么
frexp
与此有什么关系呢?嗯。。。它提取浮点指针数的分数部分和整数部分。在这种情况下,毫秒和秒。@Sonny
frexp(fsec,&isec)
调用正在用进程中fsec值的整数部分填充isec。啊,我的错误
modf
就是我的意思!谢谢,我刚刚注意到你用0除以3600得到小时数。那是个打字错误,对吗?你的意思是说“fsec/3600”,对吧?那么
frexp
与此有什么关系呢?嗯。。。它提取浮点指针数的分数部分和整数部分。在这种情况下,毫秒和秒。@Sonny
frexp(fsec,&isec)
调用正在用进程中fsec值的整数部分填充isec。啊,我的错误
modf
就是我的意思!谢谢。的副本。的副本。