Upvote:134
extension Date {
var startOfDay: Date {
return Calendar.current.startOfDay(for: self)
}
var startOfMonth: Date {
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents([.year, .month], from: self)
return calendar.date(from: components)!
}
var endOfDay: Date {
var components = DateComponents()
components.day = 1
components.second = -1
return Calendar.current.date(byAdding: components, to: startOfDay)!
}
var endOfMonth: Date {
var components = DateComponents()
components.month = 1
components.second = -1
return Calendar(identifier: .gregorian).date(byAdding: components, to: startOfMonth)!
}
func isMonday() -> Bool {
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents([.weekday], from: self)
return components.weekday == 2
}
}
Upvote:150
extension Date {
func startOfMonth() -> Date {
return Calendar.current.date(from: Calendar.current.dateComponents([.year, .month], from: Calendar.current.startOfDay(for: self)))!
}
func endOfMonth() -> Date {
return Calendar.current.date(byAdding: DateComponents(month: 1, day: -1), to: self.startOfMonth())!
}
}
print(Date().startOfMonth()) // "2018-02-01 08:00:00 +0000\n"
print(Date().endOfMonth()) // "2018-02-28 08:00:00 +0000\n"
More Answer related to the Same Query
- FIRST AND LAST DAY OF THE CURRENT MONTH IN SWIFT IN IOS
- XCODE 8 BETA - CONVERT TO CURRENT SWIFT SYNTAX FAILED: COULD NOT FIND TEST HOST IN IOS
- MAP ARRAY OF OBJECTS TO DICTIONARY IN SWIFT IN IOS
- GET THE CURRENT DISPLAYING UIVIEWCONTROLLER ON THE SCREEN IN APPDELEGATE.M IN IOS
- HOW TO REMOVE EXTRA EMPTY CELLS IN TABLEVIEWCONTROLLER, IOS - SWIFT IN IOS
- HOW TO PREVENT SCREEN LOCK ON MY APPLICATION WITH SWIFT ON IOS IN IOS
- SUBTRACT 7 DAYS FROM CURRENT DATE IN IOS
Upvote:48
guard let interval = calendar.dateInterval(of: .month, for: Date()) else { return }
Upvote:26
let startDate = dateFormatter.string(from: Date().getThisMonthStart()!)
let endDate = dateFormatter.string(from: Date().getThisMonthEnd()!)
extension Date {
func getLast6Month() -> Date? {
return Calendar.current.date(byAdding: .month, value: -6, to: self)
}
func getLast3Month() -> Date? {
return Calendar.current.date(byAdding: .month, value: -3, to: self)
}
func getYesterday() -> Date? {
return Calendar.current.date(byAdding: .day, value: -1, to: self)
}
func getLast7Day() -> Date? {
return Calendar.current.date(byAdding: .day, value: -7, to: self)
}
func getLast30Day() -> Date? {
return Calendar.current.date(byAdding: .day, value: -30, to: self)
}
func getPreviousMonth() -> Date? {
return Calendar.current.date(byAdding: .month, value: -1, to: self)
}
// This Month Start
func getThisMonthStart() -> Date? {
let components = Calendar.current.dateComponents([.year, .month], from: self)
return Calendar.current.date(from: components)!
}
func getThisMonthEnd() -> Date? {
let components:NSDateComponents = Calendar.current.dateComponents([.year, .month], from: self) as NSDateComponents
components.month += 1
components.day = 1
components.day -= 1
return Calendar.current.date(from: components as DateComponents)!
}
//Last Month Start
func getLastMonthStart() -> Date? {
let components:NSDateComponents = Calendar.current.dateComponents([.year, .month], from: self) as NSDateComponents
components.month -= 1
return Calendar.current.date(from: components as DateComponents)!
}
//Last Month End
func getLastMonthEnd() -> Date? {
let components:NSDateComponents = Calendar.current.dateComponents([.year, .month], from: self) as NSDateComponents
components.day = 1
components.day -= 1
return Calendar.current.date(from: components as DateComponents)!
}
}
More Answer related to the Same Query
- CHANGING SPECIFIC TEXT'S COLOR USING NSMUTABLEATTRIBUTEDSTRING IN SWIFT IN IOS
- HOW TO CHANGE UIBUTTON IMAGE IN SWIFT IN IOS
- MAKING TEXT BOLD USING ATTRIBUTED STRING IN SWIFT IN IOS
- DO SOMETHING EVERY X MINUTES IN SWIFT IN IOS
- LINKER COMMAND FAILED WITH EXIT CODE 1 (USE -V TO SEE INVOCATION), XCODE 8, SWIFT 3 IN IOS
- APPEARANCEWHENCONTAINEDIN IN SWIFT IN IOS
- HOW DO YOU CREATE A UIIMAGE VIEW PROGRAMMATICALLY - SWIFT IN IOS
- SWIFT: HOW TO GET SUBSTRING FROM START TO LAST INDEX OF CHARACTER IN IOS
- HOW TO GROUP BY THE ELEMENTS OF AN ARRAY IN SWIFT IN IOS
- HOW TO INCREASE LINE SPACING IN UILABEL IN SWIFT IN IOS
Upvote:12
func lastDay(ofMonth m: Int, year y: Int) -> Int {
let cal = Calendar.current
var comps = DateComponents(calendar: cal, year: y, month: m)
comps.setValue(m + 1, for: .month)
comps.setValue(0, for: .day)
let date = cal.date(from: comps)!
return cal.component(.day, from: date)
}
lastDay(ofMonth: 2, year: 2018) // 28
lastDay(ofMonth: 2, year: 2020) // 29
Upvote:7
extension Date {
func getStart(of component: Calendar.Component, calendar: Calendar = Calendar.current) -> Date? {
return calendar.dateInterval(of: component, for: self)?.start
}
func getEnd(of component: Calendar.Component, calendar: Calendar = Calendar.current) -> Date? {
return calendar.dateInterval(of: component, for: self)?.end
}
}
Upvote:6
print(Date().startOfMonth())
print(Date().endOfMonth())
More Answer related to the Same Query
- DOES SWIFT SUPPORT REFLECTION? IN IOS
- UIALERTVIEW FIRST DEPRECATED IOS 9 IN IOS
- HOW TO MAKE AN HTTP REQUEST + BASIC AUTH IN SWIFT IN IOS
- MAKE REST API CALL IN SWIFT IN IOS
- XCODE 6 WITH SWIFT SUPER SLOW TYPING AND AUTOCOMPLETION IN IOS
- HIDE TAB BAR IN IOS SWIFT APP IN IOS
- WHAT DOES "% IS UNAVAILABLE: USE TRUNCATINGREMAINDER INSTEAD" MEAN? IN IOS
- HOW TO DISMISS AN ALERTDIALOG ON A FLATBUTTON CLICK? IN IOS
- UITEXTFIELD AUTO-CAPITALIZATION TYPE - IPHONE APP IN IOS
- BUNDLE ID SUFFIX? WHAT IS IT? IN IOS
Upvote:5
let r = cal.range(of: .day, in: .month, for: d)!
let kDays = r.count
print("the number of days is ... \(kDays)")
Upvote:3
import Foundation
// Set calendar and date
let calendar = Calendar.current
let date = calendar.date(byAdding: DateComponents(day: -10), to: Date())!
// Get range of days in month
let range = calendar.range(of: .day, in: .month, for: date)! // Range(1..<32)
// Get first day of month
var firstDayComponents = calendar.dateComponents([.year, .month], from: date)
firstDayComponents.day = range.lowerBound
let firstDay = calendar.date(from: firstDayComponents)!
// Get last day of month
var lastDayComponents = calendar.dateComponents([.year, .month], from: date)
lastDayComponents.day = range.upperBound - 1
//lastDayComponents.day = range.count // also works
let lastDay = calendar.date(from: lastDayComponents)!
// Set date formatter
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_UK")
dateFormatter.dateStyle = .long
dateFormatter.timeStyle = .long
// Print results
print(dateFormatter.string(from: date)) // prints: 22 March 2017 at 18:07:15 CET
print(dateFormatter.string(from: firstDay)) // prints: 1 March 2017 at 00:00:00 CET
print(dateFormatter.string(from: lastDay)) // prints: 31 March 2017 at 00:00:00 CEST
Upvote:2
public func isMoreDays(date: Date, asc: Bool)->Bool{
//components
var dayComponents = self.getDateComponents(date: date)
//asc is true if ascendant or false if descendant
dayComponents.day = asc ? 0 : 1
//plus 1 to month 'cos if you set up day to 0 you are going to the previous month
dayComponents.month = asc ? dayComponents.month! + 1 : dayComponents.month
//instantiate calendar and get the date
let calendar : Calendar = NSCalendar.current
let day = calendar.date(from: dayComponents)
//date comparison
if(day?.compare(date) == .orderedSame){
return false
}
return true
}
Upvote:0
let today = Date()
let startOfMonth = today.beginning(of: .month)
let endOfMonth = today.end(of: .month)
Upvote:-4
/**
Get last day of month..
*/
private func getLastDay(year:Int, month:Int) -> Int
{
var ret:Int = -1
switch month {
case 1:
ret = 31
break
case 2:
break
case 3:
ret = 31
break
case 4:
ret = 30
break
case 5:
ret = 31
break
case 6:
ret = 30
break
case 7:
ret = 31
break
case 8:
ret = 31
break
case 9:
ret = 30
break
case 10:
ret = 31
break
case 11:
ret = 30
break
case 12:
ret = 31
break
default:
print("bad num")
}
if(month == 2)
{
ret = 28
let t4 = year % 4
let l100 = year % 100
let l400 = year % 400
if(t4 == 0 && l100 != 0)
{
ret = 29
}
if(l400 == 0)
{
ret = 29
}
}
return ret
}
Credit Goes to: stackoverflow.com
Related question with same questions but different answers
- HOW TO SET THE CUSTOM BORDER COLOR OF UIVIEW PROGRAMMATICALLY? IN IOS
- USING CORE DATA, ICLOUD AND CLOUDKIT FOR SYNCING AND BACKUP AND HOW IT WORKS TOGETHER IN IOS
- IOS 9 XCODE 7 - APPLICATION APPEARS WITH BLACK BARS ON TOP AND BOTTOM IN IOS
- REMOVE HTML TAGS FROM AN NSSTRING ON THE IPHONE IN IOS
- HOW CAN I COMBINE TWO DICTIONARY INSTANCES IN SWIFT? IN IOS
- XCODE UNIT TESTING WITH COCOAPODS IN IOS
- WHAT'S THE DIFFERENCE BETWEEN "ARCHITECTURES" AND "VALID ARCHITECTURES" IN XCODE BUILD SETTINGS? IN IOS
- FIND OUT IF CHARACTER IN STRING IS EMOJI? IN IOS
- SQLITE FILE LOCATION CORE DATA IN IOS
- NO SUITABLE APPLICATION RECORDS WERE FOUND IN IOS
- "THIS FUNCTION DECLARATION IS NOT A PROTOTYPE" WARNING IN XCODE 9 IN IOS
- HOW TO RECOGNIZE SWIPE IN ALL 4 DIRECTIONS IN IOS
- WHAT'S A SIMPLE WAY TO GET A TEXT INPUT POPUP DIALOG BOX ON AN IPHONE IN IOS
- "AUTO LAYOUT STILL REQUIRED AFTER EXECUTING -LAYOUTSUBVIEWS" WITH UITABLEVIEWCELL SUBCLASS IN IOS
- DO REMOTE PUSH NOTIFICATIONS REQUIRE TO ADD UIBACKGROUNDMODES IN INFO.PLIST? IN IOS
- HOW CAN I DETERMINE IF MY REACT NATIVE APP IS A DEBUG OR RELEASE BUILD FROM JAVASCRIPT CODE? IN IOS
- CAN YOU BUILD DYNAMIC LIBRARIES FOR IOS AND LOAD THEM AT RUNTIME? IN IOS
- HANDLING TOUCH EVENT IN UILABEL AND HOOKING IT UP TO AN IBACTION IN IOS
- XCODE - THERE ARE NO DSYMS AVAILABLE FOR DOWNLOAD IN IOS
- VIEWWILLDISAPPEAR: DETERMINE WHETHER VIEW CONTROLLER IS BEING POPPED OR IS SHOWING A SUB-VIEW CONTROLLER IN IOS
- XCODE 8 "THE APS-ENVIRONMENT ENTITLEMENT IS MISSING FROM THE APP'S SIGNATURE" ON SUBMIT IN IOS
- DISMISSMODALVIEWCONTROLLERANIMATED DEPRECATED IN IOS