ios - 如何使用 ActionSheetDatePicker 获取准确的日期?

标签 ios swift datepicker uidatepicker uiactionsheet

我尝试从日期选择器中选择一些日期。

假设我从操作表中选择了2018-02-05。但在输出中我得到2018-02-04

这是我尝试过的以下代码。在 print(value) 中,我得到以下输出

输出:2018-02-04 18:30:00 +0000

func dateAndTimePicker(_ sender: Any){
        let datePicker = ActionSheetDatePicker(title: "Date", datePickerMode: UIDatePickerMode.date, selectedDate: NSDate() as Date!, doneBlock: {
            picker, value, index in
            print(value) 

            return
        }, cancel: { ActionStringCancelBlock in return }, origin: (sender as AnyObject).superview!?.superview)
        datePicker?.show()
}

最佳答案

日期选择器返回完整的日期和时间。如果您的日期选择器仅显示日期,则它始终使用 0:00 时间。而且 Date 没有时区,因此您获取的日期始终是 0:00 UTC,而不是您本地时区的 0:00。您得到的结果是正确的,因为如果您将该 Date 调整为您本地时区的时间,则为 2018-02-05。

应用程序在向用户显示日期和时间时,在内部使用 UTC 时间并将日期格式设置为本地时间始终是一种很好的做法。这样,如果有人前往不同的时区,其新位置的数据仍然是正确的。您可以使用 DateFormatter 来完成此操作。一个简单的例子是这样的

    let formatter = DateFormatter()
    formatter.dateStyle = .short
    formatter.timeStyle = .short
    let localDateString = formatter.string(from: datePicker.date)

关于ios - 如何使用 ActionSheetDatePicker 获取准确的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48508896/

相关文章:

ios - 如何向每个单元格添加一个按钮?

ios - 可扩展单元格不会扩展

javascript - 无法为 mootools 中的日期选择器提供 maxdate 选项

c# - MVVM - 单击按钮时在哪里调用函数?

ios - 屏幕上同时出现一堆 UiView 会不会很糟糕

ios - Swift iOS - 如何在不重新加载数据的情况下更改已加载到屏幕上的所有可见单元格的 TableView 单元格属性?

java - 将 Material 日期选择器值添加到 TextView

javascript - 如何更改 Angular 中的 mat 日期选择器日期格式?

ios - stopMonitoringForRegion 是仅停止重复区域还是也停止原始区域?

ios - 在 UI ImageView 中检索和显示保存的图像(文档文件夹)