菜鸟教程小白 发表于 2022-12-12 10:37:05

ios - UIDatePicker 和日期未正确存储


                                            <p><p>我有一个 IBAction 方法绑定(bind)到运行以下代码的 UIToolbarButton。</p>

<p>UIDatePicker 仅设置为向用户显示时间。
因此,选择器随机选择日期:有时日期是今天,有时日期是明天。我希望选择器始终选择所选时间(但总是在将来)。例如如果用户在 1 月 1 日上午 10:00 选择上午 6:00,我希望日期存储在 1 月 2 日上午 6:00。</p>

<p>以下 if 应该这样做,但是 NSLog 50% 的时间返回一个答案,50% 的时间返回另一个。</p>

<pre><code>if (self.picker.date &gt;= ) {
    NSUserDefaults *defaults = ;
    NSDate *pickerdate = self.picker.date;
    ;
    ;
    NSLog(@&#34;The date is more than now. Pickerdate is %@&#34;,pickerdate);
}
else {
    NSUserDefaults *defaults = ;
    NSCalendar*       calendar = [ initWithCalendarIdentifier: NSGregorianCalendar];
    NSDateComponents* components = [ init];
    components.day = 1;
    NSDate * pickerdate = ;
    ;
    ;
    NSLog(@&#34;The date is less than now. Pickerdate is %@&#34;,pickerdate);
}
</code></pre>

<p>编辑:代码已修改,我的逻辑倒退了,但问题依然存在。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您不能使用 <code>>=</code>(或类似的)运算符来比较两个 <code>NSDate</code> 对象。这些是对象。您必须使用 <code>compare:</code> 方法来比较两个日期。正如您所拥有的那样,您正在比较一个对象指针是否大于或等于另一个对象指针。绝对不是你想要的。</p>

<p>正确的替换是:</p>

<pre><code>if (] != NSOrderAscending) {
</code></pre>

<p>请注意,<code></code> 给出的结果与 <code></code> 相同。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - UIDatePicker 和日期未正确存储,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/16073664/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/16073664/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - UIDatePicker 和日期未正确存储