Xcode8 Beta4を使用して、Swift2.3で開発されたプロジェクトをSwift3.0に変換しています。日付を文字列に変換する方法がありますが、変換に失敗します。
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
を使用する必要がありますか?
クラス階層を深く調べることで、NSTimeZone
をpublic typealias
として見つけ、NSTimeZone
へのアクセスを可能にします。
内部TimeZone
public struct TimeZone : CustomStringConvertible, CustomDebugStringConvertible, Hashable, Equatable, ReferenceConvertible {
public typealias ReferenceType = NSTimeZone
}
そのため、以下の構文エラーを使用すると、表示されなくなります。
したがって、以下のコードが機能します。
localタイムゾーンの場合。
formatter.timeZone = TimeZone.ReferenceType.local
デフォルトタイムゾーンの場合。同じ構文でdefault
を使用します。
formatter.timeZone = TimeZone.ReferenceType.default
システムタイムゾーンの場合。同じ構文でsystem
を使用します。
formatter.timeZone = TimeZone.ReferenceType.system
Swift
.current
の代わりに.local
を使用できます。
TimeZone.current
.local
の代わりにこれを使用して、Swift 3:
TimeZone.current