gpt4 book ai didi

objective-c - 时间间隔计算问题

转载 作者:行者123 更新时间:2023-11-29 11:14:40 25 4
gpt4 key购买 nike

我正在尝试创建一个应用程序来计算时差,并将金额乘以金额。它旨在以 R$(巴西雷亚尔)计算某人在应用程序计算的时间内必须为使用服务支付的金额。

这是我的代码:

- (IBAction)encerrar:(id)sender {

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"HH:mm";
NSString *temp = inicio.text;
NSDate *then = [dateFormatter dateFromString:temp];
NSDate *now = [NSDate date];
NSTimeInterval timeInterval = [now timeIntervalSinceDate:then];
NSString *ext = [dateFormatter stringFromDate:now];
fim.text = ext;
NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
NSString *timeString = [dateFormatter stringFromDate:timerDate];
duracao.text = timeString;

double timeIntervalInHours = (timeInterval / 3600.0) * 5;

NSString *vTotal = [[NSString alloc] initWithFormat:@"R$ %.2f", fecha];
NSLog(@"%.2f", timeIntervalInHours);
vlrTotal.text = vTotal;
}

事实是,当我们单击“计算”按钮时,如果 duracao(持续时间)等于 1 小时,它会给出正确的金额,即 5,00 雷亚尔。但是,当持续时间等于 30 分钟或不同于精确 1 小时的其他值时,它会给出错误的数量。

即:1 小时应为 5,00 雷亚尔;而 1:30h 应该是 R$7,50,但显示为 R$6,50。

那么,有人可以帮我解决这个问题吗???

提前致谢!!!

最佳答案

timeInterval 是以秒为单位的时间量,所以如果您想要以小时和小时的几分之一为单位,只需这样做:

double timeIntervalInHours = timeInterval / 3600.0;

然后多次 timeIntervalInHours 乘以价格/小时以获得成本。

编辑
根据我们的聊天记录,我会创建一个标题为“iniciar”(开始)的按钮。当他们按下那个按钮时,我会存储当前时间并将标题更改为“encerrar”(停止)。 (我希望我的翻译是正确的,大声笑)然后按钮 Action 看起来像这样:

// self.startTime is a NSDate.
- (IBAction)iniciar_encerrar:(UIButton *)sender {
if ([sender.titleLabel.text isEqualToString:@"iniciar"]) {
// We are starting the time
if (self.startTime != nil) {
return;
}

self.startTime = [NSDate date];
[sender setTitle:@"encerrar" forState:UIControlStateNormal];
} else {
// We are stopping the time
NSDate *currentTime = [NSDate date];
NSTimeInterval elapsedTimeInSeconds = [currentTime timeIntervalSinceDate:self.startTime];
double cost = elapsedTimeInSeconds / 3600.0 * 5.0;
NSLog(@"%.2lf", cost);

// reset the button
self.startTime = nil;
[sender setTitle:@"iniciar" forState:UIControlStateNormal];
}
}

startTime 声明如下:

在您的 .h 文件中,连同其他声明的属性,添加:

@property (strong, nonatomic) NSDate *startTime;

在您的 .m 文件中,将其与其他文件一起添加到顶部:

@synthesize startTime;

在您的 viewDidUnload 函数中(在您的 .m 文件中)添加:

startTime = nil;

这只是为您提供了一个存储开始时间日期的地方。

关于objective-c - 时间间隔计算问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9999186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com