このエントリーをはてなブックマークに追加

2017年1月27日金曜日

Swift3でDateからその月の月末のDateを取得

こんにちはonukiです。

今回はSwift3でDateの月末が何日か取得したかったので
備忘録がてら、私が行った方法を紹介したいと思います。

実装

var date = Date()
let calendar = NSCalendar(identifier: NSCalendar.Identifier.gregorian)!

// 年月日時分秒のNSComponents
var comp = calendar.components([.year, .month, .day, .hour, .minute, .second], from: date as Date)

// 月初の0時0分0秒に設定
comp.day = 1
comp.hour = 0
comp.minute = 0
comp.second = 0
// ここでcalendar.date(from: comp)!すれば月初のDateが取得できます

// その月が何日あるかを計算します
let range = calendar.range(of: .day, in: .month, for: date as Date)
let lastDay = range.length

// ここで月末の日に変えます
comp.day = lastDay

// Dateを作成
let retDate = calendar.date(from: comp)!

上記では現在日時からDateを作成し、その月の月末にしてるので
例えば2017年1月に実行した場合下記のフォーマットで整形しprintすると「20170131」になります。
let formatter = DateFormatter()
formatter.dateFormat = "yyyyMMdd"
let dateStr: String = formatter.string(from: retDate as Date)
print(dateStr)

0 件のコメント:

コメントを投稿