DatePicker 的选择与返回的日期不同

Posted

技术标签:

【中文标题】DatePicker 的选择与返回的日期不同【英文标题】:DatePicker's selection is different from the returned date 【发布时间】:2019-09-16 06:18:18 【问题描述】:

选择的是 9/16/21,但返回的日期是 9/16/20。返回的日期没有以某种方式同步。这里没有什么特别的,只是 DatePicker 的标准用法。它是 DatePicker 的错误吗?如何解决这个问题?

DatePicker(selection: $model.returnDate, in: model.returnDateRange, displayedComponents: .date) 
                Text("Return Date")

Full Source Code

如何重现:

将第一个日期选择器的年份改为2020年,如果你想再做一次,只需将第一个日期选择器的日期改为2021、2022...

【问题讨论】:

这似乎是一个组合问题。选择器正在返回正确的数据。您可以通过打印 returnDate 属性的 didSet ... 中的值来验证这一点。实际上,如果您在 didSet 闭包中设置消息文本,它就可以正常工作。似乎水槽关闭执行得太快了。我暂时没时间了,但稍后会继续;-) 【参考方案1】:

我认为这是 DatePicker 的错误。

可以通过使用出发发布者更新返回日期来解决。

DatePicker(selection: $model.returnDate, in: model.returnDateRange, displayedComponents: .date) 
        Text("Return Date")
    
    .onReceive(model.$departureDate, perform:model.updateReturnDate)


func updateReturnDate(_ date: Date) 
    if date > returnDate 
        returnDate = date
    

【讨论】:

以上是关于DatePicker 的选择与返回的日期不同的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap datepicker 显示的日期格式与值的格式不同

Sencha touch datepicker 和 ios 软键盘

jQuery:如何从与 datepicker 插入日期的输入字段不同的元素中激活 datepicker?

jqueryUI datepicker 在传递日期之前触发输入的模糊,避免/解决方法?

vue+element DatePicker日期选择器封装(可自定义快捷选择时间)

Jquery UI Datepicker可以以与最初保存的格式日期不同的格式显示日期吗?