给定年份和月份,如何检查该月是否存在特定日期
Given year & month, how to check a particular day exists in that month
我正在尝试检查一个月中是否存在特定的一天。但是无法找到任何帮助。举个例子,我在 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 进行操作并移动指针。因此,我无法找到一种方法来检查给定月份和年份中是否存在特定日期。
谁能指导一下。
让我们将其分解为 -
How to check number of days in a month-year?
然后您的问题归结为检查给定日期是否在 [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
致谢:
试试下面的方法,您可以检查一个月中是否存在特定的一天。
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。
DateComponents
有一个 isValidDate
属性,你可以使用
为此目的:
var components = DateComponents()
components.month = 2
components.year = 2016
components.day = 30
components.calendar = Calendar.current
print(components.isValidDate) // false
我正在尝试检查一个月中是否存在特定的一天。但是无法找到任何帮助。举个例子,我在 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 进行操作并移动指针。因此,我无法找到一种方法来检查给定月份和年份中是否存在特定日期。 谁能指导一下。
让我们将其分解为 -
How to check number of days in a month-year?
然后您的问题归结为检查给定日期是否在 [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
致谢:
试试下面的方法,您可以检查一个月中是否存在特定的一天。
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。
DateComponents
有一个 isValidDate
属性,你可以使用
为此目的:
var components = DateComponents()
components.month = 2
components.year = 2016
components.day = 30
components.calendar = Calendar.current
print(components.isValidDate) // false