【问题标题】:UIDatePicker minimumdateUIDatePicker 最小日期
【发布时间】:2013-04-28 08:11:51
【问题描述】:

我对一个问题感到困惑。我不明白我在哪里做错了

我需要在 1810 年附近为我的 UIDatePicker 设置最小日期。所以我试着让它像

    datePicker.minimumDate = [[NSDate alloc] initWithTimeIntervalSince1970: - (60 * 60 * 24 * 365 * 160)];

但是我弄错了 minimumdate:

于是我就另辟蹊径解决了问题

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [NSDateComponents new];
comps.year = -160;
datePicker.minimumDate = [calendar dateByAddingComponents:comps toDate:[NSDate dateWithTimeIntervalSince1970:0] options:0];

但我不明白为什么在第一种情况下我弄错了 minimumdate

【问题讨论】:

  • 所有日子都不一样。日光,飞跃.....
  • 我想知道如果您执行明确的“-1 * 60 * 60 * ...”,问题是否会消失?
  • 尝试60.0 * 60 * 24 * 365 * 160 制作一个然后浮动
  • Anoop Vaidya 是的,它有助于解决问题 =) 写下你的答案以供检查之类的最佳答案

标签: ios objective-c uidatepicker


【解决方案1】:
datePicker.minimumDate = [[NSDate alloc] initWithTimeIntervalSince1970: - (60 * 60 * 24 * 365 * 160)];

160 年不是60 sec * 60 min * 24 hours * 365 days。

你没有考虑各种因素,最容易知道的是闰年。

编辑:

使用60.0 * 60 * 24 * 365 * 160 使其中之一浮动,因此结果将是float,因为您可能会超出 int32(ios) 范围。

【讨论】:

  • 这可能是真的,但他 1946 年的结果与 1810 年相去甚远,所以我不认为闰年计算错误是这里的问题。
  • @MichaelDautermann:在阅读了 Natan 的回答后,我猜他是对的,他不应该尝试使用 double 而不是 int。尝试 60.0 * 60 * 24 * 365 * 160 制作一个然后浮动
【解决方案2】:

在我看来,这与 int 的最大值有关。进行此乘法运算的结果为 5.045.760.000,并且正如您所做的那样,它是整数的乘法,而不是 60.0 * 60.0,也许这就是它失败的原因。

尝试直接输入我在此处发布的数字,或者将其声明为浮点数并传递给方法,或者将其中一个浮点数设置为浮点数: - 60.0 * 60 * 24 * 365 * 160

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-16
    • 2017-03-29
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    相关资源
    最近更新 更多