我正在创建一个应用程序,当他/她选择他们想要的时间(例如:约会)并单击按钮时,该应用程序会将电子邮件发送到选定的电子邮件。电子邮件有效,但是他们选择的时间转换为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(["[email protected]"])
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)
}
您可以使用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)
祝你好运!