Как установить часовой пояс в Swift - PullRequest
0 голосов
/ 07 января 2020

Я создаю приложение, в котором приложение отправляет электронное письмо на выбранную электронную почту, когда он / она выбирает время, которое они хотят (например, для встречи), и нажимает кнопку. Письмо работает, но выбранное время конвертируется в 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)
       }

1 Ответ

2 голосов
/ 07 января 2020

Вы можете использовать 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)

Удачи!

...