回答編集履歴
1
dateFormatの指定に冗長なところがあったので、コードを改善し、説明を追加しました。
answer
CHANGED
@@ -1,8 +1,18 @@
|
|
1
1
|
```swift
|
2
2
|
var df = DateFormatter()
|
3
3
|
df.locale = Locale(identifier: "ja_JP")
|
4
|
-
df.dateFormat =
|
4
|
+
df.dateFormat = "cccc"
|
5
5
|
print("(df.string(from: Date()))")
|
6
6
|
```
|
7
7
|
|
8
|
-
playgroundで、"金曜日"と出力されました
|
8
|
+
上記で、playgroundで、"金曜日"と出力されました。
|
9
|
+
|
10
|
+
`df.locale`でロケールを指定して、`df.dateFormat`に変換するときのフォーマット文字列を指定すると、それらに従って`df.string(from:)`で整形された文字列が得られます。
|
11
|
+
|
12
|
+
フォーマット文字列は、[こちらに詳細な定義がありますが](http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns)、どういう形式にするかを指定するものです。
|
13
|
+
|
14
|
+
`DateFormatter.dateFormat(fromTemplate: "EEEE", options: 0, locale: Locale(identifier: "ja_JP"))`は、"cccc"という値を返してきます。
|
15
|
+
このクラスメソッドは、指定したロケールに最適なフォーマット文字列を返すものです。ここでのロケールはフォーマット文字列を選ぶのに適用され、実際に変換するときのロケールを指定しているのではありません。
|
16
|
+
変換するときのロケールは、`DateFormatter`の`locale`に指定します。
|
17
|
+
|
18
|
+
なお、上記ページをみると、"EEEE"も"cccc"も同じ結果が得られるので、どちらでもよいと思います。
|