Objective c NSS秒到小时、分钟、秒的数量
我正在经历一段艰难的时光,试图做一些本该简单的事情。我的NSNumber值为32025.89秒。我需要用小时,分,秒来表示。有没有一种方法可以把它吐出来?我似乎找不到合适的格式化程序 如果你不想把它分开,试试这个。就你的目的而言,它可能足够近了注意:它不考虑亚秒精度。(Objective c NSS秒到小时、分钟、秒的数量,objective-c,cocoa,nsnumber,Objective C,Cocoa,Nsnumber,我正在经历一段艰难的时光,试图做一些本该简单的事情。我的NSNumber值为32025.89秒。我需要用小时,分,秒来表示。有没有一种方法可以把它吐出来?我似乎找不到合适的格式化程序 如果你不想把它分开,试试这个。就你的目的而言,它可能足够近了注意:它不考虑亚秒精度。(setSecond采用NSInteger) 如果你不想把它分开,试试这个。就你的目的而言,它可能足够近了注意:它不考虑亚秒精度。(setSecond采用NSInteger) 您是否尝试过从中创建一个NSDate,并使用NSDate
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
与此有什么关系呢?嗯。。。它提取浮点指针数的分数部分和整数部分。在这种情况下,毫秒和秒。@Sonnyfrexp(fsec,&isec)
调用正在用进程中fsec值的整数部分填充isec。啊,我的错误modf
就是我的意思!谢谢,我刚刚注意到你用0除以3600得到小时数。那是个打字错误,对吗?你的意思是说“fsec/3600”,对吧?那么frexp
与此有什么关系呢?嗯。。。它提取浮点指针数的分数部分和整数部分。在这种情况下,毫秒和秒。@Sonnyfrexp(fsec,&isec)
调用正在用进程中fsec值的整数部分填充isec。啊,我的错误modf
就是我的意思!谢谢。的副本。的副本。