【问题标题】:UIDatePicker shows incorrect timeUIDatePicker 显示不正确的时间
【发布时间】:2018-11-27 13:26:07
【问题描述】:

我正在尝试将 minimumDate 设置为 datepicker,但 datepicker 在显示时会增加 +1 小时。

我怀疑 Datepicker 的时区与 firstPossibleOrderTime 不同。

我从 api 得到这个:20181127151122。

然后使用 SwiftyDate pod 来初始化日期。

    DateInRegion(firstPossiblePickup, format: "yyyyMMddHHmmss",
    region: .currentIn()). 

    let datePickerFrame = UIDatePicker(frame: .zero)
    datePickerFrame.locale = Locale.init(identifier: "nb")


    print(self.firstPossibleOrderTime.date)
    print(self.firstPossibleOrderTime.date.add(28.days))

    datePickerFrame.minimumDate = self.firstPossibleOrderTime.date
    datePickerFrame.maximumDate = self.firstPossibleOrderTime.date.add(28.days)

如何防止 Datepicker 将时间增加 1 小时?

【问题讨论】:

  • firstPossibleOrderTime.date 的值是什么?你是怎么初始化的?这是正确的值吗?
  • 你能告诉我们什么是'firstPossibleOrderTime'吗?我的猜测是当您的时间戳来自服务器并将其解析为您使用错误格式(例如时区)的日期实例时
  • 我从 api 得到这个:20181127151122。然后使用 pod 来初始化:DateInRegion(firstPossiblePickup, format: "yyyyMMddHHmmss", region: .currentIn())。 self.firstPossibleOrderTime.date 则为:2018-11-27 15:11:22 +0000
  • @KristerMoen 您可以编辑您的问题以将这些信息添加到您的问题中。此外,您正在使用哪个 pod 的信息也很重要。

标签: swift timezone uidatepicker


【解决方案1】:

我猜您可能使用了错误的日期格式化程序来转换您从服务器接收到的日期。
您从服务器收到的时间是字符串吗?
如果是字符串,设置在哪个时区?
您必须在解析之前考虑到这一点,通常服务器会返回一个 en_US_POSIX 日期字符串,您可以使用此日期格式化程序对其进行解析。

 let dateFormatter = DateFormatter()
        dateFormatter.locale = Locale(identifier: "en_US_POSIX")
        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'"
        dateFormatter.isLenient = false

如果不是这种格式,您可能必须考虑时区或夏令时。

【讨论】:

    猜你喜欢
    • 2021-04-19
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多