Тип "TimeZone" не имеет локального члена в Swift3

Я конвертирую проект, разработанный в Swift2.3 в Swift3.0, используя Xcode8 Beta4. У меня есть метод преобразования даты в строку, но он не может ее преобразовать.

class func convertDateToString(_ date:Date, dateFormat:String) -> String?
{
    let formatter:DateFormatter = DateFormatter();
    formatter.dateFormat = dateFormat;
    formatter.timeZone = TimeZone.local
    let str = formatter.string(from: date);
    return str;
}

введите описание изображения здесь

Также в документации нет члена с именем local.

Есть ли способ использовать TimeZone напрямую? или мы должны использовать NSTimeZone?

Ответы

Ответ 1

Вникая в иерархию классов, найдите NSTimeZone как public typealias, которые открывают для нас доступ NSTimeZone.

Внутри TimeZone

public struct TimeZone : CustomStringConvertible, CustomDebugStringConvertible, Hashable, Equatable, ReferenceConvertible {

    public typealias ReferenceType = NSTimeZone
}

Итак, используя ниже синтаксическую ошибку, исчезните.

Таким образом, код ниже будет работать.

Для локального часового пояса.

formatter.timeZone = TimeZone.ReferenceType.local

Для часового пояса по умолчанию. Используйте default с тем же синтаксисом.

formatter.timeZone =  TimeZone.ReferenceType.default

Для часового пояса системы. Используйте system с тем же синтаксисом.

formatter.timeZone = TimeZone.ReferenceType.system

Swift 3

Вы можете использовать .current вместо .local.

TimeZone.current

Ответ 2

Используйте это вместо .local в swift 3:

TimeZone.current