首页 > 解决方案 > 如何在 Swift 中设置时区

问题描述

我正在创建一个应用程序,当他/她选择他们想要的时间(例如:约会)并单击按钮时,该应用程序会向选定的电子邮件发送电子邮件。电子邮件有效,但他们选择的时间被转换为 GMT + 0 而不是我的当地时间。我试着搜索这个,但到目前为止没有运气。我正在尝试在 UIDatePicker 上配置时区,是否有任何选项或代码可以解决此问题?

我想将时区设置为 GMT + 3,或者我希望应用程序自动检测时区。

@IBAction func SendButton(_ sender: Any) {
        showMailComposer()

           showMailComposer()

        print(ServiceA)
    }

    func showMailComposer() {

        guard MFMailComposeViewController.canSendMail() else {
            //Show alert informing the user
            return
        }

        let composer = MFMailComposeViewController()
        composer.mailComposeDelegate = self
        composer.setToRecipients(["mohid.sheraz@outlook.com"])
        composer.setSubject("Booking")
        composer.setMessageBody("Name: \(nameField.text!) \n\nPhone: \(emailField.text!) \n\nDate/Time: \(datePicker.date)", isHTML: false)

        present(composer, animated: true)
    }

    func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {

           if let _ = error {
               //Show error alert
               controller.dismiss(animated: true)
               return
           }

           switch result {
           case .cancelled:
               print("Cancelled")
           case .failed:
               print("Failed to send")
           case .saved:
               print("Saved")
           case .sent:
               print("Email Sent")
           @unknown default:
               break
           }

           controller.dismiss(animated: true)
       }

标签: iosswifttimezoneuidatepicker

解决方案


您可以使用 Swift DateFormatter 使日期更具可读性并针对时区差异进行调整。

    let dateFormatter = DateFormatter()
    dateFormatter.dateStyle = .long
    dateFormatter.timeStyle = .none

    // Then select your timezone.
    // Either by abbreviation or defaulting to the system timezone.
    dateFormatter.timeZone = TimeZone(abbreviation: "EST")
    dateFormatter.timeZone = TimeZone.current

    let dateString = dateFormatter.string(from: date)

祝你好运!


推荐阅读