繁体   English   中英

Objective-C:使用 NSDate 和 NSDecimalNumber 计算小时费率

[英]Objective-C: Calculating hourly rate with NSDate and NSDecimalNumber

我有两个 NSDate 实例(一个开始时间和一个结束时间),还有一个 NSDecimalNumber (代表在两个日期之间的时间段内赚取的金额)。 我要做的是根据这三个变量计算每小时费率。 我想出了一些可行的方法,但对我来说有点过分了,我想知道是否有更简单、更有效的方法。 这就是我现在正在做的事情。

计算两个 NSDate 之间的时间量

NSTimeInterval timeInSeconds = [endTime timeIntervalSinceDate:startTime];

将其转换为小时

double hours = timeInSeconds / 3600;

将小时数加倍转换为 NSNumber

NSNumber *duration = [NSNumber numberWithDouble:hours];

将 NSNumber 转换为 NSString

NSLocale *locale = [NSLocale currentLocale];
NSString *durationString = [duration descriptionWithLocale:locale];

使用这个字符串创建一个 NSDecimalNumber

NSDecimalNumber *decimalDuration = [NSDecimalNumber decimalNumberWithString:durationString locale:locale];

将原始 NSDecimalNumber(结果)除以这个新的 NSDecimalNumber 时间表示

NSDecimalNumber *hourlyRate = [result decimalNumberByDividingBy:decimalDuration];

如果我理解正确,做任何涉及我原始 NSDecimalNumber 的数学运算的唯一方法是创建另一个 NSDecimalNumber 实例,因此有必要通过所有这些步骤 go。 我担心我可能会失去准确性或执行不必要的步骤。 感谢您的任何建议。

你为什么不只是使用一个简单的数学?

NSTimeInterval timeInSeconds = [endTime timeIntervalSinceDate:startTime];
double hours = timeInSeconds / 3600;
double rate = [result doubleValue];
double hourlyRate = rate / hours;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM