Я пытаюсь получить начальную и конечную даты текущего месяца в формате dd/MM/yyyy
. Я попробовал использовать расширение, как было сказано в этом SO Question. Но похоже, что это не то, что я хочу (формат отличается, и он дает мне последнюю дату последнего месяца и текущий месяц, но одну дату). Кто-нибудь может мне помочь.Как получить дату начала и дату окончания текущего месяца (Swift 3)
Расширение Класс:
extension Date {
func startOfMonth() -> Date? {
let comp: DateComponents = Calendar.current.dateComponents([.year, .month, .hour], from: Calendar.current.startOfDay(for: self))
return Calendar.current.date(from: comp)!
}
func endOfMonth() -> Date? {
var comp: DateComponents = Calendar.current.dateComponents([.month, .day, .hour], from: Calendar.current.startOfDay(for: self))
comp.month = 1
comp.day = -1
return Calendar.current.date(byAdding: comp, to: self.startOfMonth()!)
}
}
Мой Struct:
struct Constants{
// keys required for making a Login call (POST Method)
struct LoginKeys {
.....
}
struct RankingKeys {
static let DateFrom = String(describing: Date().startOfMonth()) //giving me 2016-11-30 16:00:00 +0000
static let DateTo = String(describing: Date().endOfMonth())
//2016-12-30 16:00:00 +0000
}
}
Ожидаемый результат:
DateFrom = "01/12/2016"
DateTo = "31/12/2016"
Возможна временная зона. –
Даже даты неправильные. дата начала должна быть в первый день декабря, а конец дня должен быть 31, но выходы разные – ASN
Ваш код в порядке. Вы получаете правильные значения по местному времени. Пожалуйста, узнайте, как читать выходные данные журнала 'Date'. Обратите внимание на часовой пояс на выходе. – rmaddy