Почему даты NSCalendar насчет возвращает неправильную дату?
-
29-09-2019 - |
Вопрос
Я ожидаю 2010-10-11 00:00:00
Но вместо этого я получаю 2010-10-10 21:00:00 +0000
Я знаю, что я могу добавить несколько часов и получать желаемую дату, но я не понимаю, почему я получаю предыдущий день с 21 часами ...
Пожалуйста помоги!
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:2010];
[comps setMonth:10];
[comps setDay:11];
[comps setHour:0];
[comps setMinute:0];
[comps setSecond:0];
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *retDate = [cal dateFromComponents:comps];
Решение
Я думаю, что ваша проблема может быть решена путем установки NSTimeZone
.
Другие советы
Если вам нужен конкретный формат времени, используйте этот форматированный или оставьте это, чтобы получить правильное время. Первый вариант ...
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let localDate = formatter.dateFromString("1989-10-17T05:00:00.000-0000")
Или если вам нужна дата от компонентов, используйте код ниже, как ...
let calendar = NSCalendar.currentCalendar()
calendar.timeZone = NSTimeZone(name: "GMT")!
let date = calendar.dateFromComponents(components)
или вам нужно
Не связан с StackOverflow