создать экземпляр DateComponents
, используя следующий код:Почему Calendar.date (from: DateComponents) добавляет время?
let dateComponents = DateComponents(
calendar: .current,
timeZone: Calendar.current.timeZone,
era: nil,
year: nil,
month: nil,
day: nil,
hour: 9,
minute: 0,
second: 0,
nanosecond: 0,
weekday: 2,
weekdayOrdinal: nil,
quarter: nil,
weekOfMonth: nil,
weekOfYear: nil,
yearForWeekOfYear: nil)
Я затем распечатать dateComponents
объект и получить следующий (ожидаемый) результат:
календарь: Григорианский (текущая) Часовой пояс: Европа/Лондон (текущий) час: 9 минут: 0 секунд: 0 наносекунда: 0 день недели: 2 isLeapMonth: false
Сразу после этого я печатаю дату, созданную нами ИНГ следующий код:
print(Calendar.current.date(from: dateComponents)!)
К моему большому разочарованию и тщательное несчастьем, следующее выводится:
0001-01-01 09: 0 1:15 +0000
Функция date(from: dateComponents)
, как представляется, добавила чуть более минуты к dateComponents перед созданием даты из них.
Благодарим за любую помощь заранее.
Какого смысл создание даты, которая имеет только один час и не другие компоненты? Какова ваша цель? – rmaddy
Вам нужно указать дату, иначе она вернется к году 1 и будет иметь огромное временное смещение. Просто выберите что-то вроде эры 1 год 2001 месяц 1 день 1 –
BTW вы можете опустить параметры, которые вы не устанавливаете ни в какое значение (nil по умолчанию), если вы сохраняете один и тот же порядок. –