iOSアプリ開発においてデータベースのデータから本日登録されたデータだけを取り出す必要があったのですが、そのためには今日の0時0分のDateを作らなければなりません。例えば.Net Frameworkでは下記のように作成することができます。
var now = DateTime.Now; var date = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0);
ところがSwiftのDateクラスにはそのようなイニシャライザはありません。また、Dateクラスから時間や分をInt型の値として取り出すこともできないようです。
Calenderクラスと組み合わせて作る
DateクラスとNSDateクラスばかり調べていたので時間かかってしまいました。結論から言うと下記のようにして今日の0時0分を作ることができます。
Calendar(identifier: .gregorian).startOfDay(for: Date()))
Calenderクラスを使うのですね。上記の例ではDateインスタンスを新規で生成しているので今日になりますが、別の日のDateインスタンスを使えば任意の日時の0時0分を作ることができます。.Net FrameworkはDateTime型で色々できるのでNSDateやDateは貧弱で辛いなあと思っていたのですが、Calenderクラスと組み合わせることでDateTimeと同等の機能が用意されているようです。