给定年份和月份,该月份如何检查特定日期

我想检查一个月内是否存在特定日期。 但无法找到任何帮助。 举个例子,我在Playground中尝试了下面的代码;

var components = DateComponents() components.month = 2 components.year = 2016 components.day = 30 components.calendar = Calendar.current components.date 

这给出了答案;

 "Mar 1, 2016, 12:00 AM" 

所以它的作用是它试图用TimeZones操纵并移动针。 因此,我无法找到一种方法来检查特定日期和特定日期是否存在。 任何人都可以指导。

DateComponents具有isValidDate属性,您可以将其用于此目的:

 var components = DateComponents() components.month = 2 components.year = 2016 components.day = 30 components.calendar = Calendar.current print(components.isValidDate) // false 

让我们打破这个 –

如何查看一个月的天数?

然后你的问题归结为检查给定的日期是否在[1,numDaysInMonthYear]范围内。

上面的代码是这样的:

 // Swift 2: let range = calendar.rangeOfUnit(.Day, inUnit: .Month, forDate: date) // Swift 1.2: let range = calendar.rangeOfUnit(.CalendarUnitDay, inUnit: .CalendarUnitMonth, forDate: date) let numDaysInMonthYear = range.length print(numDaysInMonthYear) // 31 

致谢: 如何使用swift查找给定月份和年份的天数

尝试以下方法,您可以检查一个月内存在的特定日期。

 function checkDayIsExist(year:Int,month:Int,day:Int) -> Bool { let dateComponents = DateComponents(year: year, month: month) let calendar = Calendar.current let date = calendar.date(from: dateComponents)! let numberOfDays = calendar.range(of: .day, in: .month, for: date)! return numberOfDays.count >= day } 

打电话

 print(checkDayIsExist(year:2017,month:7,day:31)) // true 

您可以使用NSDateFormatter / DateFormatter进行检查

 let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd MM yyyy" let dateString = "30 02 2017" if let date = dateFormatter.date(from: dateString) { print("Date \(date)") } else { print("Date not existed") } 

您可以根据输入字符串更改日期格式化程序的dateFormate。