swift-獲惹烀ā(當(dāng)月、當(dāng)年纫普、任意月|年)的第一天阅悍、最后一天日期

1、得到當(dāng)前月第一天昨稼、最后一天日期

//本月開始日期
func startOfCurrentMonth() -> Date {
    let date = Date()
    let calendar = NSCalendar.current
    let components = calendar.dateComponents(
        Set<Calendar.Component>([.year, .month]), from: date)
    let startOfMonth = calendar.date(from: components)!
    return startOfMonth
}
 
//本月結(jié)束日期
func endOfCurrentMonth(returnEndTime:Bool = false) -> Date {
    let calendar = NSCalendar.current
    var components = DateComponents()
    components.month = 1
    if returnEndTime {
        components.second = -1
    } else {
        components.day = -1
    }
     
    let endOfMonth =  calendar.date(byAdding: components, to: startOfCurrentMonth())!
    return endOfMonth
}

測試使用

//創(chuàng)建一個日期格式器
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss"
 
//當(dāng)月第一天日期
let startDate = startOfCurrentMonth()
print("本月開始時間:", dateFormatter.string(from: startDate as Date))
 
//當(dāng)月最后一天日期1
let endDate1 = endOfCurrentMonth()
print("本月結(jié)束時間1:", dateFormatter.string(from: endDate1))
 
//當(dāng)月最后一天日期2
let endDate2 = endOfCurrentMonth(returnEndTime: true)
print("本月結(jié)束時間2:", dateFormatter.string(from: endDate2))

2节视、得到當(dāng)年第一天、最后一天日期

//本年開始日期
func startOfCurrentYear() -> Date {
    let date = Date()
    let calendar = NSCalendar.current
    let components = calendar.dateComponents(Set<Calendar.Component>([.year]), from: date)
    let startOfYear = calendar.date(from: components)!
    return startOfYear
}
 
//本年結(jié)束日期
func endOfCurrentYear(returnEndTime:Bool = false) -> Date {
    let calendar = NSCalendar.current
    var components = DateComponents()
    components.year = 1
    if returnEndTime {
        components.second = -1
    } else {
        components.day = -1
    }
     
    let endOfYear = calendar.date(byAdding: components, to: startOfCurrentYear())!
    return endOfYear
}

測試:

//創(chuàng)建一個日期格式器
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss"
 
//本年度第一天日期
let startDate = startOfCurrentYear()
print("本年度開始時間:", dateFormatter.string(from: startDate))
 
//本年度最后一天日期1
let endDate1 = endOfCurrentYear()
print("本年度結(jié)束時間1:", dateFormatter.string(from: endDate1))
 
//本年度最后一天日期2
let endDate2 = endOfCurrentYear(returnEndTime: true)
print("本年度結(jié)束時間2:", dateFormatter.string(from: endDate2))

3假栓、得到指定年月的第一天寻行、最后一天日期

//指定年月的開始日期
func startOfMonth(year: Int, month: Int) -> Date {
    let calendar = NSCalendar.current
    var startComps = DateComponents()
    startComps.day = 1
    startComps.month = month
    startComps.year = year
    let startDate = calendar.date(from: startComps)!
    return startDate
}
 
//指定年月的結(jié)束日期
func endOfMonth(year: Int, month: Int, returnEndTime:Bool = false) -> Date {
    let calendar = NSCalendar.current
    var components = DateComponents()
    components.month = 1
    if returnEndTime {
        components.second = -1
    } else {
        components.day = -1
    }
     
    let endOfYear = calendar.date(byAdding: components,
                                  to: startOfMonth(year: year, month:month))!
    return endOfYear
}

測試代碼:

//創(chuàng)建一個日期格式器
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss"
 
//當(dāng)月第一天日期
let startDate = startOfMonth(year: 2016, month: 8)
print("2016年8月的開始時間:", dateFormatter.string(from: startDate))
 
//當(dāng)月最后一天日期1
let endDate1 = endOfMonth(year: 2016, month: 8)
print("2016年8月的結(jié)束時間1:", dateFormatter.string(from: endDate1))
 
//當(dāng)月最后一天日期2
let endDate2 = endOfMonth(year: 2016, month: 8, returnEndTime: true)
print("2016年8月的結(jié)束時間2:", dateFormatter.string(from: endDate2))

https://www.hangge.com/blog/cache/detail_1223.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市匾荆,隨后出現(xiàn)的幾起案子拌蜘,更是在濱河造成了極大的恐慌,老刑警劉巖牙丽,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件简卧,死亡現(xiàn)場離奇詭異,居然都是意外死亡烤芦,警方通過查閱死者的電腦和手機(jī)举娩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來构罗,“玉大人铜涉,你說我怎么就攤上這事∷爝螅” “怎么了芙代?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盖彭。 經(jīng)常有香客問我纹烹,道長,這世上最難降的妖魔是什么召边? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任铺呵,我火速辦了婚禮,結(jié)果婚禮上掌实,老公的妹妹穿的比我還像新娘陪蜻。我一直安慰自己邦马,他們只是感情好贱鼻,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布宴卖。 她就那樣靜靜地躺著,像睡著了一般邻悬。 火紅的嫁衣襯著肌膚如雪症昏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天父丰,我揣著相機(jī)與錄音肝谭,去河邊找鬼。 笑死蛾扇,一個胖子當(dāng)著我的面吹牛攘烛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播镀首,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼坟漱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了更哄?” 一聲冷哼從身側(cè)響起芋齿,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎成翩,沒想到半個月后觅捆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡麻敌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年栅炒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庸论。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡职辅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出聂示,到底是詐尸還是另有隱情域携,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布鱼喉,位于F島的核電站秀鞭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扛禽。R本人自食惡果不足惜锋边,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望编曼。 院中可真熱鬧豆巨,春花似錦、人聲如沸掐场。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至萍膛,卻和暖如春吭服,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蝗罗。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工艇棕, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人串塑。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓沼琉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桩匪。 傳聞我的和親對象是個殘疾皇子刺桃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容