2017-02-14 80 views
-1

我花了近一个星期的尝试失败。我如何获得当月的最后日期?例如,如果是非闰年的2月份,则该月份的最后一个日期必须是28.如何获得'28'。另一个例子:如果是一月,则最后一个日期必须是“31”如何获取月份的最后日期

+0

在C#或vb.net我只是得到当前月份,并作出新的日期为每月1日。然后我减去1天,以获得该月的最后一天。 –

回答

5

的方法有很多,下面介绍了其中两个:

获取下一个1和减1天

func lastDayOfMonth1() -> Date 
{ 
    let calendar = Calendar.current 
    let components = DateComponents(day:1) 
    let startOfNextMonth = calendar.nextDate(after:Date(), matching: components, matchingPolicy: .nextTime)! 
    return calendar.date(byAdding:.day, value: -1, to: startOfNextMonth)! 
} 

print(lastDayOfMonth1()) 

使用range(of:in:for:)摆脱范围内的最后一天,并设置相应的组件:

func lastDayOfMonth2() -> Date 
{ 
    let calendar = Calendar.current 
    let now = Date() 
    var components = calendar.dateComponents([.year, .month, .day], from: now) 
    let range = calendar.range(of: .day, in: .month, for: now)! 
    components.day = range.upperBound - 1 
    return calendar.date(from: components)! 
} 

print(lastDayOfMonth2()) 
相关问题