2016-09-06 11 views
14

Xcode8 Beta4を使用してSwift2.3で開発されたプロジェクトをSwift3.0に変換しています。私は日付を文字列に変換するメソッドを持っていますが、変換に失敗します。ドキュメントにもタイプ 'TimeZone'にSwift3に 'local'というメンバーはありません

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; 
} 

enter image description here

localという名前のメンバーがありません。

TimeZoneは何も直接使用することはできますか?またはNSTimeZoneを使用する必要がありますか?

+0

'.system'と' .default'に同じ、このformatter.timeZone = .localの –

+0

'NSTimeZone.local'が機能してみてください。あなたはアップルでバグ報告をすることができます。 –

+0

@ Anbu.Karthik: '.local'も動作しません。 – technerd

答えて

23

NSTimeZonepublic 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を使用してください。

3スウィフト

formatter.timeZone = TimeZone.ReferenceType.system 

あなたは.currentの代わり.local使用することができます。

TimeZone.current 
+1

デフォルトでは 'NSTimeZone.local' tor、ローカルでは' NSTimeZone.default'、システムでは 'NSTimeZone.system'を使ってください。 –

+2

@LeoDabus:はい、直接NSTimeZoneを使うことができますが、Xcodeが自動的にSwift2.3コードをSwift3.0その後、 'NSTimeZone'を 'TimeZone'に変換します。したがって、スウィフトクラスを使用することをお勧めします。だからもし誰かが 'TimeZone'を使いたいのであれば、それは問題を引き起こすでしょう。ありがとう! – technerd

22

使用この代わりの迅速な3で.local

TimeZone.current 
+2

これは正解でなければなりません:) – dustinrwh

関連する問題