首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的JTAppleCalendar提前了1天?

为什么我的JTAppleCalendar提前了1天?
EN

Stack Overflow用户
提问于 2018-01-30 19:50:55
回答 2查看 950关注 0票数 1

我正在使用JTAppleCalendar,每个月的日期都比正常日期提前了1天。下面是我的配置代码:

代码语言:javascript
复制
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日应该是星期一,但却显示为星期二。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-30 20:43:21

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

代码语言:javascript
复制
    let parameters = ConfigurationParameters(
        startDate: startDate,
        endDate: endDate,
        numberOfRows: 6,
        calendar: calendar,
        generateOutDates: .tillEndOfRow,
        firstDayOfWeek: .monday
    )

    return parameters

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

票数 3
EN

Stack Overflow用户

发布于 2018-01-30 21:32:13

firstDayOfWeek参数应该只控制您在最左边的列中看到的星期几,所以我怀疑这就是解决方案。

考虑到您使用nextYear作为currentYear +1,它看起来更像您在屏幕截图中看到的2019年1月。

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

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48520779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档