我有一个可以使用公历类型的应用程序。日期的所有API信息均为公历类型。但是,如果用户使用佛教日历,那么某些地方会发生崩溃。例如:
func days(from date: Date) -> Int {
let beginningOfDay = date.beginningOfDay ?? date
return Int(timeIntervalSince1970 - beginningOfDay.timeIntervalSince1970) / Int(TimeInterval.day)
}
在整个应用程序中,如何忽略日历的用户设置并强制将日期设置为公历?有可能吗?
我刚刚建立了转换器,但是我不想转换,我只是想在整个应用程序上使用公历。
谢谢
答案 0 :(得分:3)
这似乎是您在Date
上添加了许多不属于该扩展名的扩展名。 Date
是一个时间点。为了讨论“日子”,您应该调用Calendar
和DateComponents
方法。无论如何,此功能不是很正确。根据DST的更改,它可能一天关闭。您不能假设一天是24小时长;有些是25小时,有些是23小时。
您想要的代码是:
let calendar = Calendar(identifier: .gregorian)
calendar.dateComponents([.day], from: d1, to: d2).day!
就像您扩展程序中的某个位置一样,您拥有Calendar.current
。这表示“当前用户日历”。无法告诉系统“即使我明确要求当前的用户日历,也请给我其他信息”。查找使用Calendar.current
的代码,如果这就是您的意思,则将其替换为Calendar(identifier: .gregorian)
。