gpt4 book ai didi

objective-c - 将当前时间四舍五入为最接近的 30 分钟间隔 Obj c

转载 作者:行者123 更新时间:2023-12-02 06:57:51 30 4
gpt4 key购买 nike

我的选择器设置:

  • 仅限时间模式
  • 30 分钟间隔
  • 当前时间

  • 在按钮操作后获取选择器值(代码下方):

    //Begin time
    if(date_formate)
    date_formate=nil;

    date_formate=[[NSDateFormatter alloc] init];
    [date_formate setDateFormat:@"hh:mm a"];

    txtfldBeginTime.text=[date_formate stringFromDate:time_picker.date];

问题:

  • 当前时间是下午 6:17

  • 选择器从下午 6:00 开始并显示。

  • 当获取选择器的值时,选择器中没有任何滚动。下午 6:17 返回。
  • 在选择器中滚动获取选择器值并设置开始时间(下午 6:00)。然后,它照常返回下午 6:00。

提议:

1.

  • 如果当前时间高于 5:30 且低于 6:00,则选择器从 6:00 开始。
  • 否则,当前时间在6:00以上,6:30以下,则从6:30开始拾取。

    1. 在没有任何滚动的情况下获取选择器值时,返回值应该是选择器的初始值。也就是说,如果选择器从 6:30 开始,则选择器返回值为 6:30。

最佳答案

这是四舍五入到最接近的 30 分钟的公式

int remainder = currentMinute % 30;
int rounded = currentMinute + 30-remainder;

// if current minute is 17
// remainder = 17 % 30 == 17
// rounded = 17 + 30-17 == 30

// if current minute is 56
// remainder = 56 % 30 == 26
// rounded = 56+30-26== 60

编辑:将模运算符从\更正为 %

EDIT2:抱歉,我之前发布的公式不正确。这应该是正确答案

编辑 3:完整代码

- (NSDate *)roundUpToNearestHalfHour:(NSDate *)value {
NSDateComponents *comp = [[NSCalendar currentCalendar] components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitCalendar fromDate:value];
NSInteger minute = [comp minute];
int remainder = minute % 30;
int rounded = minute + 30 - remainder;

[comp setMinute:rounded];

return [comp date];
}

关于objective-c - 将当前时间四舍五入为最接近的 30 分钟间隔 Obj c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604035/

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