Как изменить год назад, который меняется на 2000 после использования формата даты - PullRequest
0 голосов
/ 06 декабря 2018

привет, я хочу получить текущие часы и минуты из Date () , поэтому мне нужно отформатировать его в строку и снова вернуться к дате.Но после того, как я попытаюсь преобразовать в дату смену года на 2000, как мне вернуться к текущему году.

//date formatter
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "HH:mm"
    dateFormatter.timeZone = TimeZone.current


    // Get current time and format it to compare
    var currentTime = Date() //Get current time
    let currentTimeStr = dateFormatter.string(from: currentTime) //get current time only hour and minute
    currentTime = dateFormatter.date(from: currentTimeStr)! //this is where the problem because the year change into 1 January 2000

enter image description here

1 Ответ

0 голосов
/ 07 декабря 2018

Из того, что я прочитал в комментариях, я думаю, что вам нужно как текущее время в объекте Date, так и строка с часами и минутами в формате "HH:MM".

Проблема связана с попыткойиспользуйте средство форматирования, для которого не указан год.Вы перезаписываете currentTime из строки, для которой не определен год (или день, или месяц), поэтому по умолчанию используется значение 1 января 2000 года (часы и минуты должны быть правильными).

Вытакже говорите, что вам нужно отформатировать его в строку, а затем вернуться к объекту Date. Вы не , у вас уже есть все данные, которые вам нужны в объекте Date, поэтому сохраняйте их и используйте, когда вам это нужно.Если это означает создание группы DateFormatters по всему проекту, вы всегда можете расширить Date, чтобы иметь функцию или переменную, которая возвращает строку в нужном формате.

extension Date {
  var hoursAndMinutesString: String {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "HH:mm"
    dateFormatter.timeZone = TimeZone.current
    return dateFormatter.string(from: self)
  }
}

Затем просто вызовитефункция из объекта Date, когда вам нужно, например:

currentTime.hoursAndMinutesString
...