Swift计算当月、任意月一共有多少天例子

1,获取当前月天数

//计算当月天数
func getDaysInCurrentMonth() -> Int {
    let calendar = NSCalendar.currentCalendar()
    
    let date = NSDate()
    let nowComps = calendar.components([.Year, .Month, .Day], fromDate: date)
    let year =  nowComps.year
    let month = nowComps.month
    
    let startComps = NSDateComponents()
    startComps.day = 1
    startComps.month = month
    startComps.year = year
    
    let endComps = NSDateComponents()
    endComps.day = 1
    endComps.month = month == 12 ? 1 : month + 1
    endComps.year = month == 12 ? year + 1 : year
    
    let startDate = calendar.dateFromComponents(startComps)!
    let endDate = calendar.dateFromComponents(endComps)!
    
    let diff = calendar.components(.Day, fromDate: startDate, toDate: endDate,
                                   options: .MatchFirst)
    return diff.day
}

测试代码:

let days = getDaysInCurrentMonth()
print("本月有\(days)天")

2,获取指定年月的天数

//计算指定月天数
func getDaysInMonth( year: Int, month: Int) -> Int
{
    let calendar = NSCalendar.currentCalendar()
    
    let startComps = NSDateComponents()
    startComps.day = 1
    startComps.month = month
    startComps.year = year
    
    let endComps = NSDateComponents()
    endComps.day = 1
    endComps.month = month == 12 ? 1 : month + 1
    endComps.year = month == 12 ? year + 1 : year
    
    let startDate = calendar.dateFromComponents(startComps)!
    let endDate = calendar.dateFromComponents(endComps)!
    
    let diff = calendar.components(.Day, fromDate: startDate, toDate: endDate,
                                   options: .MatchFirst)
    return diff.day
}

测试代码:

let days = getDaysInMonth(2016, month: 2)
print("2016年2月有\(days)天")

时间: 2024-08-02 13:02:41

Swift计算当月、任意月一共有多少天例子的相关文章

如何使用PHP计算上一个月的今天

  一日,遇到一个问题,求上一个月的今天. 最开始我们使用 strtotime("-1 month") 函数求值,发现有一个问题,月长度不一样的月份的计算结果有误. 比如:2011-03-31,得到的结果是2011-03-03.我们先不追究什么问题,先看如何解决问题. 此时,想起PHP中有一个mktime函数,于是自己写了如下代码: 代码如下: echo date("Y-m-d H:i:s", mktime(date("G", $time), d

link用循环计算两个日期之间有多少工作日

问题描述 link用循环计算两个日期之间有多少工作日 用循环计算两个日期之间有多少工作日,link怎么实现?用takewhile怎么代替while? 解决方案 不考虑过节和轮休,写一个给你 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class P

如何使用PHP计算上一个月的今天_php技巧

一日,遇到一个问题,求上一个月的今天. 最开始我们使用 strtotime("-1 month") 函数求值,发现有一个问题,月长度不一样的月份的计算结果有误. 比如:2011-03-31,得到的结果是2011-03-03.我们先不追究什么问题,先看如何解决问题. 此时,想起PHP中有一个mktime函数,于是自己写了如下代码: 复制代码 代码如下: echo date("Y-m-d H:i:s", mktime(date("G", $time)

c语言-C语言计算 海滩上原来最少有多少个桃子

问题描述 C语言计算 海滩上原来最少有多少个桃子 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个这 只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份,第三.第四.第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子 解决方案 http://bbs.bccn.net/thread-10979-1-1.html 解决方案二: 我觉得最后的最后 应该还剩1个

一段时间-java计算两个日期间有多少自然周

问题描述 java计算两个日期间有多少自然周 给定一个开始日期和一个结束日期,开始日期如果是周六或周天,那么这就不算一周.结束日期哪怕是周一也要算是一周.最好能有代码,谢谢! 解决方案 有点小失误,修改过的 public static int get(Date dtS, Date dtE) { Calendar calS = Calendar.getInstance(); calS.setTime(dtS); boolean isMonday = true; Calendar calE = Ca

PHP strtotime计算上一个月的今天问题解决

PHP,上一个月 strtotime 有个小问题  代码如下 复制代码 > php -r"echo date('Ymd000000′,strtotime ( '-1 month', strtotime ( '201307310000′ ) ));" 20130701000000# > php -r"echo date('Ymd000000′,strtotime ( '-1 month', strtotime ( '201308010000′ ) ));"

PHP计算上一个月的今天 今天是星期几

 上一个月的今天 strtotime 有个小问题  代码如下 复制代码 > php -r"echo date('Ymd000000′,strtotime ( '-1 month', strtotime ( '201307310000′ ) ));" 20130701000000# > php -r"echo date('Ymd000000′,strtotime ( '-1 month', strtotime ( '201308010000′ ) ));"

SQL语句计算两个日期之间有多少个工作日的方法_MsSql

/* 因为工作中一个奇怪的需求,要用SQL语言计算两个日期间有多少个工作日. 设定是一个星期有5个工作日,从星期一到星期五 说明:   第一个星期的工作日数:DATEPART(dw, @begdt)-DATEPART(dw, @begdt),最少0天   末一个星期的工作日数:DATEPART(dw, @enddt),最多5天 计算方法:   如果两个日期处在同一个星期内,直接计算"第一个星期的工作日数"   否则按下面的公式计算     (两个日期间的总天数 - 第一个星期的天数 -

SQL语句计算两个日期之间有多少个工作日的方法

/* 因为工作中一个奇怪的需求,要用SQL语言计算两个日期间有多少个工作日. 设定是一个星期有5个工作日,从星期一到星期五 说明:   第一个星期的工作日数:DATEPART(dw, @begdt)-DATEPART(dw, @begdt),最少0天   末一个星期的工作日数:DATEPART(dw, @enddt),最多5天 计算方法:   如果两个日期处在同一个星期内,直接计算"第一个星期的工作日数"   否则按下面的公式计算     (两个日期间的总天数 - 第一个星期的天数 -