我有一个适用于公历类型的应用程序。日期的所有 API 信息均采用公历类型。但是如果用户有佛历我会在某些地方崩溃。例如:
func days(from date: Date) -> Int {
let beginningOfDay = date.beginningOfDay ?? date
return Int(timeIntervalSince1970 - beginningOfDay.timeIntervalSince1970) / Int(TimeInterval.day)
}
如何忽略日历的用户设置并强制日期在整个应用程序中使用公历?可能吗?
我刚刚创建了转换器,但我不想转换,我只想在整个应用程序上强制使用公历。
谢谢
最佳答案
看起来您在 Date
添加了很多不属于那里的扩展。 Date
是一个时间点。为了谈论“天”,您应该调用 Calendar
和 DateComponents
方法。无论如何,这个功能不太正确。根据夏令时的变化,它可能会关闭一天。您不能假设一天是 24 小时;有些是 25 小时,有些是 23 小时。
您想要的代码是:
let calendar = Calendar(identifier: .gregorian)
calendar.dateComponents([.day], from: d1, to: d2).day!
可能在您的扩展中的某处您有 Calendar.current
。这意味着“当前用户日历”。没有办法告诉系统“即使我明确要求当前用户日历,请给我其他东西。”查找使用 Calendar.current
的代码并将其替换为 Calendar(identifier: .gregorian)
如果这就是您的意思。
关于ios - 在整个应用程序上设置日历类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51063197/