2016-11-11 3 views
0

Я пытаюсь преобразовать сегодняшнюю дату, используя DateComponents:DateComponents дает неверную дату

let calendar = Calendar.current   
//add today's date 
var todayDate = Date() 
var dateComponents = calendar.dateComponents([.day, .month, .year], from: todayDate) 
dateComponents.timeZone = TimeZone.current 
todayDate = calendar.date(from: dateComponents)! 

При отладке я обнаружил, что после объявления todayDate, его значение было 2016-11-11 07:44:44 +0000. После использования dateComponents значение изменилось на 2016-11-10 18:30:00 +0000. Принимая во внимание, что согласно моему местоположению, день должен быть 11 ноября, а время должно быть где-то между 1 или 2 вечера. Почему это происходит?

ответ

0

Вы не указали часовой пояс или часы минут и секунд в своих компонентах. Итак, все эти значения считаются равными нулю. Результирующее время - в полночь GMT в год, месяц и день, которые вы указали.

Когда вы напечатали результат, вы указали свой текущий часовой пояс, который, по-видимому, составляет 5 часов 30 м.

Я предполагаю, что вы находитесь в Индии.

+0

Я указал 'dateComponents.timeZone = TimeZone.current' выше. Позвольте мне попробовать добавить часы и минуты, а затем повторить попытку – StudentX

+0

После добавления .hour и .minute, дата правильная, но время все еще в UTC. – StudentX

+0

Вам нужно также выделить часовой пояс. Не устанавливать его отдельно. –