Swift 为什么我的JTAppleCalendar提前1天发布?

Swift 为什么我的JTAppleCalendar提前1天发布?,swift,jtapplecalendar,Swift,Jtapplecalendar,我使用的是JTAppleClendar,每个月的日期比应该的日期提前1天。这是我的配置代码: func configureCalendar(_ calendar: JTAppleCalendarView) -> ConfigurationParameters { formatter.dateFormat = "yyyy MM dd" formatter.timeZone = Calendar.current.timeZone formatter.locale =

我使用的是JTAppleClendar,每个月的日期比应该的日期提前1天。这是我的配置代码:

func configureCalendar(_ calendar: JTAppleCalendarView) -> ConfigurationParameters {

    formatter.dateFormat = "yyyy MM dd"
    formatter.timeZone = Calendar.current.timeZone
    formatter.locale = Calendar.current.locale

    let currentYear = Calendar.current.component(.year, from: Date())
    let stringCurrentYear = String(currentYear)
    let nextYear = currentYear + 1
    let stringNextYear = String(nextYear)
    let currentMonth = Calendar.current.component(.month, from: Date())
    let stringCurrentMonth = String(currentMonth)

    let startDate = formatter.date(from: "\(stringCurrentYear) \(stringCurrentMonth) 01")!
    let endDate = formatter.date(from: "\(stringNextYear) 12 31")!

    let parameters = ConfigurationParameters(startDate: startDate, endDate: endDate)

    return parameters

}
这是电流输出:


2018年1月1日应该是星期一,但现在是星期二。

找到了我自己的答案。我使用了以下代码来修复它:

    let parameters = ConfigurationParameters(
        startDate: startDate,
        endDate: endDate,
        numberOfRows: 6,
        calendar: calendar,
        generateOutDates: .tillEndOfRow,
        firstDayOfWeek: .monday
    )

    return parameters

我认为问题在于,默认情况下,一周的第一天是默认的周日。因此,将其设置为Monday解决了问题。

firstDayOfWeek参数应该只控制您在最左侧列中看到的工作日,因此我怀疑这是否是解决方案

鉴于您将nextYear用作currentYear+1,您在屏幕截图中看到的更像是2019年1月

我不会使用格式化程序,而是尝试使用DateComponents,如下所示:

let calendar = Calendar.current
let date = Date()

let currentYear = Calendar.current.component(.year, from: Date())

var dateOneComponents = DateComponents()
dateOneComponents.year = currentYear
dateOneComponents.month = 1
dateOneComponents.day = 1
let dateOne = calendar.date(from: dateOneComponents)

var dateTwoComponents = DateComponents()
dateTwoComponents.year = currentYear
dateTwoComponents.month = 12
dateTwoComponents.day = 31
let dateTwo = calendar.date(from: dateTwoComponents)