ios - 如何在 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)
}
解决方案
您可以使用 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)
祝你好运!
推荐阅读
- reactjs - Material-UI:X-Grid / DataGrid 默认 ColumnMenu 未显示
- ios - 如何在 iOS 中分配提醒(EKReminder)?
- sql - Statistical functions on columns of arrays in BigQuery
- python - 如何根据索引拆分python字符串?
- c# - C#反射调用方法而不访问实例化类型
- c# - How to escape XPath quotes "" with C#
- xpath - 刮这个表的正确方法(使用scrapy / xpath)
- sql - 在 Loopback 4 中,我在哪里执行本机 SQL 查询?
- redux - Selector 从 redux 状态返回空数组,即使数组有值
- python - “pipenv 安装请求”是否适用于 python 3.9.2?