我有两个 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 实例,因此有必要完成所有这些步骤。我担心我可能会失去准确性或执行不必要的步骤。感谢您的任何建议。