Построить дату из Int правильно - PullRequest
0 голосов
/ 30 августа 2018

Итак, я получаю от бэкэнда этот ответ:

{ "SERVERDateTimeGet": { "Return Code" : 0,
    "Return String" : "No Error",
    "Year" : 2018,
        "Month" : 8,
        "Day" : 29,
        "Hour" : 14,
        "Minute" : 16,
        "Second" : 20,
        "Daylight" : 1,
        "NTP" : 0,
        "NtpDhcp" : 0,
        "NtpServers" : "time.google.com",
        "Timezone" : "EET-2EEST,M3.5.6/0:01,M9.1.5" }
 }

(я знаю, что это плохо, очень плохо, но на то время, что я получаю)

У меня есть этот метод:

func makeDate(year: Int, month: Int, day: Int, hr: Int, min: Int, sec: Int) -> Date {
    let calendar = Calendar(identifier: .gregorian)
   // calendar.timeZone = TimeZone.current
    let components = DateComponents(year: year, month: month, day: day, hour: hr, minute: min, second: sec)
    //let components = DateComponents(timeZone: TimeZone.current, year: year, month: month, day: day, hour: hr, minute: min, second: sec)
    return calendar.date(from: components)!
}

но когда я получу дату, это будет 3 часа назад. Я предполагаю, что это потому, что часовой пояс, но, как вы можете видеть, я не использую часовой пояс. Есть ли другой способ построить дату или просто использовать текущие целые числа?

1 Ответ

0 голосов
/ 30 августа 2018

Если вы не установите TimeZone, это означает, что ваше время будет в UTC, поэтому у вас будет -3 часа. Чтобы получить правильное значение, вам нужно настроить TimeZone. Вы можете проверить это здесь

...