Получить количество дней за предыдущий месяц - PullRequest
0 голосов
/ 13 июня 2019

Как узнать количество дней в предыдущем месяце?

i.e = текущий месяц июнь, так что я хочу май месяц Общее количество дней. (выход = 31)

Это то, что я пробовал, но это не работает.

let PrevDate = Calendar.current.date(byAdding: .month, value: -1, to: Date())

Ответы [ 4 ]

1 голос
/ 13 июня 2019

Это использование:

let calendar = Calendar.current
let date1 = calendar.date(byAdding: .month, value: -1, to: Date())! // -1 mean previous month

let range = calendar.range(of: .day, in: .month, for: date1)!
let numDays = range.count
print(numDays)

ВЫХОД:

31
0 голосов
/ 13 июня 2019

Попробуйте код ниже:

let calendar = NSCalendar.current
let currentDate = Date()
let month = calendar.component(.month, from: currentDate)
let year = calendar.component(.year, from: currentDate)
let dateComponents = DateComponents(year: year, month: month - 1)
let date = calendar.date(from: dateComponents)!

let range = calendar.range(of: .day, in: .month, for: date)!
let numDays = range.count
print(numDays)

Здесь вы можете изменить год также в соответствии с вашими требованиями.

Надеюсь, это поможет.

0 голосов
/ 13 июня 2019

То, что вы получили, это просто дата ровно месяц назад, чтобы узнать количество дней в месяце, вы бы сделали еще один шаг вперед:

let calendar = Calendar.current

let prevDate = calendar.date(byAdding: .month, value: -1, to: Date())!
let numberOfDaysInPreviousMonth = calendar.range(of: .day, in: .month, for: prevDate)?.count

И все, у вас есть счет в numberOfDaysInPreviousMonth.

0 голосов
/ 13 июня 2019

Просто используйте Calendar.current.range, посмотрите ниже.

let range = Calendar.current.range(of: .day, in: .month, for: PrevDate)!

let numDays = range.count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...