给定年份和月份,该月份如何检查特定日期
我想检查一个月内是否存在特定日期。 但无法找到任何帮助。 举个例子,我在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。
- 以编程方式在Swift中模拟UITableViewController中的select
- 如何让应用程序商店的名称很长,然后在图标下面有一个简短的名字?
- viewDidAppear没有被调用
- 聊天,会话,消息传递 – CoreData模型
- validation目标c中相同文本字段中的电话号码和电子邮件
- 错误ITMS-9000:无效的捆绑。 xyz.app上的bundle不包含bundle executable
- 错误ITMS-9000:“缺less代码签名权利。 在捆绑中找不到权利“ – 如何更改应用程序ID名称
- 如何在基于WebKit的应用程序中启用本地存储?
- Swift – 使用Long Gesture识别器拖放TableViewCell