Je convertis un projet développé dans Swift2.3 en Swift3.0 en utilisant Xcode8 Beta4. Dans lequel j'ai une méthode pour convertir la date en chaîne, mais il ne parvient pas à la convertir.
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;
}
Également dans la documentation, il n'y a aucun membre nommé local
.
Existe-t-il un moyen d'utiliser directement TimeZone
? ou nous devons utiliser NSTimeZone
?
En approfondissant la hiérarchie des classes, ont trouvé NSTimeZone
comme public typealias
, qui nous ouvre l'accès à NSTimeZone
.
À l'intérieur TimeZone
public struct TimeZone : CustomStringConvertible, CustomDebugStringConvertible, Hashable, Equatable, ReferenceConvertible {
public typealias ReferenceType = NSTimeZone
}
Donc, en utilisant l'erreur de syntaxe ci-dessous, disparaissez.
Donc, le code ci-dessous fonctionnera.
Pour local fuseau horaire.
formatter.timeZone = TimeZone.ReferenceType.local
Pour par défaut fuseau horaire. Utilisez default
avec la même syntaxe.
formatter.timeZone = TimeZone.ReferenceType.default
Pour système fuseau horaire. Utilisez system
avec la même syntaxe.
formatter.timeZone = TimeZone.ReferenceType.system
Swift
Vous pouvez utiliser .current
au lieu de .local
.
TimeZone.current
Utilisez ceci au lieu de .local
in Swift 3:
TimeZone.current