2016-11-17 11 views
1

に予期しない結果を生成:たDateFormatterは、私は次のコードを持っているデバイス

var components = DateComponents() 
components.year = 2017 
components.month = 1 

var calendar = Calendar.current 
let date = calendar.date(from: components)! 

let formatter = DateFormatter() 
formatter.setLocalizedDateFormatFromTemplate("MMMMYYYY") 
let string = formatter.string(from: date) 

私は自分のコンピュータ上のシミュレータでこれを実行すると、私は期待通りに動作し、stringの値が2017年1月です。

私のデバイスで同じコードを実行すると、stringの値は1月2016になります。この違いを引き起こす原因は何ですか?

答えて

1

差はデバイスとシミュレータに

  • 異なるロケールであってもよいです。

および/または

  • YYYY年ベースのカレンダーの週年です。
  • yyyyは標準カレンダーの年です。

常にyyyyを使用してください。

+0

はい、 'yyyy'を使って修正します。なぜ私が 'YYYY'を使っていたのか分かりません。たぶん帽子のロックを幸せにするでしょう。 –

関連する問題