【问题标题】:How To Set TimeZone in Swift如何在 Swift 中设置时区
【发布时间】:2020-04-25 03:40:37
【问题描述】:

我正在创建一个应用程序,当他/她选择他们想要的时间(例如:约会)并单击按钮时,应用程序会向选定的电子邮件发送电子邮件。电子邮件有效,但他们选择的时间被转换为 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)
       }

【问题讨论】:

  • 您应该edit 您的问题以minimal reproducible example 的形式包含所有相关代码,以使其成为主题。
  • 怎么样?对不起,我是新人。
  • 只需查看链接的帮助站点。要编辑您的问题,您只需点击我评论中的链接 :)

标签: ios swift timezone uidatepicker


【解决方案1】:

您可以使用 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)

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 2014-11-21
    • 2015-06-01
    • 2014-11-16
    • 2019-10-19
    • 2015-09-27
    • 1970-01-01
    相关资源
    最近更新 更多