タイトルのままですが、[String:Any]等で、AnyにはString型Bool型Int型等ダイレクトに入力できる物が多いのですが、Date型も入れれないのかと考えてみました。
結局よくわからず、String型で日時を作ってDateFormatterを設定してDate型に変換してから出ないと無理っぽい感じでした。
なのでやったことの忘備録です。
import UIKit let dateNow = Date() //現在の時刻 var dateDic: [String:Any] = [:] //ディクショナリ型 //①ディクショナリ型に直接date型を入れたいが無理っぽい。 dateDic["dateNow"] = dateNow dateDic["dateString"] = "2020-04-20 11:15:17 +0000" print(dateDic["dateNow"] as! Date) //print(dateDic["dateString"] as! Date ) //String型なので当然エラーになる //②なのでDate型を作るためにDateFormatterをセット let dateFormatter = DateFormatter() dateFormatter.locale = Locale(identifier: "en_US_POSIX")//USなので時差に注意。 dateFormatter.dateFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss'" dateFormatter.timeZone = TimeZone(secondsFromGMT: 0) //文字列をDateFormatterでDate型にして辞書に収納 let string = "2020-04-20 11:15:17" let dateString = dateFormatter.date(from: string) dateDic["dateString"] = dateString print(dateDic["dateString"] as! Date) //Date型として出せる。 //③おまけDate型を日本用に出力。 let f = DateFormatter() f.timeStyle = .full f.dateStyle = .full f.locale = Locale(identifier: "ja_JP")//日本なので時差に注意。 print(f.string(from: dateDic["dateString"] as! Date))
こんなんでます。
2020-04-20 23:38:46 +0000 2020-04-20 11:15:17 +0000 2020年4月20日 月曜日 20時15分17秒 日本標準時
ちょいとめんどいですね。