я могу выбрать время при выборе даты, когда получу значение из UTC, так как конвертировать время UTC в GMT + 05: 30 к дате? - PullRequest
0 голосов
/ 24 сентября 2018
var timeReminder = Date()
let dateFormReminder = DateFormatter()
dateFormReminder.calendar = Calendar.current
dateFormReminder.dateFormat = "HH:mm a"
dateFormReminder.timeZone = TimeZone(abbreviation: "GMT +05:30")
timeReminder = dateFormReminder.date(from: txt_time.text!)!

Изображение средства выбора даты

enter image description here

Я не получаю местное время, когда преобразовываю строку времени в значение даты.ВЫХОД: - 2000-01-01 07:12:00 + 0000

1 Ответ

0 голосов
/ 24 сентября 2018

Вам нужно сделать вот так

UIDatePicker отобразить Local DateTime, но он возвращает UTC DateTime.Таким образом, вам нужно преобразовать его в местный для получения фактической локальной даты и времени.

func GetLocalStringDateFromUTC(date:Date)-> String{

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" //Your date format
    dateFormatter.timeZone = TimeZone(abbreviation: "GMT+5:30") //Current time zone different
    let myString = dateFormatter.string(from: date) //according to date format your date string
    return myString //Convert String to Date
}

// For Get date from string
func GetDateFromString(date_string:String,dateFormat:String)-> Date{

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = dateFormat //Your date format
    dateFormatter.timeZone = TimeZone(abbreviation: "GMT+0:00") //Current time zone
    let date = dateFormatter.date(from: date_string) //according to date format your date string
    return date! //Convert String to Date
}

// For Get time from Date
func GetTimefromDate(date_string:String,dateFormat:String)-> String{

    let dateFormatter_db = DateFormatter()
    dateFormatter_db.dateFormat = dateFormat
    let dateFormatter_eventDate = DateFormatter()
    dateFormatter_eventDate.dateFormat = "hh:mm a" //Your time format
    let date = dateFormatter_db.date(from: date_string)
    return dateFormatter_eventDate.string(from: date!)
}

Используйте вот так

let date = datePicker.date  // Pass your DatePicker Date Here

print(GetLocalStringDateFromUTC(date: date)) // Local String Date from UTC
print(GetDateFromString(date_string: GetLocalStringDateFromUTC(date: date), dateFormat: "yyyy-MM-dd HH:mm:ss")) // Local Date() from UTC
print(self.GetTimefromDate(date_string: self.GetLocalStringDateFromUTC(date: datePicker.date), dateFormat: "yyyy-MM-dd HH:mm:ss")) // Local Time from UTC

Вывод:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...