ios - 在整个应用程序上设置日历类型

标签 ios swift swift4

我有一个适用于公历类型的应用程序。日期的所有 API 信息均采用公历类型。但是如果用户有佛历我会在某些地方崩溃。例如:

func days(from date: Date) -> Int {
    let beginningOfDay = date.beginningOfDay ?? date
    return Int(timeIntervalSince1970 - beginningOfDay.timeIntervalSince1970) / Int(TimeInterval.day)
}

如何忽略日历的用户设置并强制日期在整个应用程序中使用公历?可能吗?

我刚刚创建了转换器,但我不想转换,我只想在整个应用程序上强制使用公历。

谢谢

最佳答案

看起来您在 Date 添加了很多不属于那里的扩展。 Date 是一个时间点。为了谈论“天”,您应该调用 CalendarDateComponents 方法。无论如何,这个功能不太正确。根据夏令时的变化,它可能会关闭一天。您不能假设一天是 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/

相关文章:

ios - WKWebView 检查Web View 是否支持加载文件

ios - 为什么 UIWebView 无法在 Safari 中打开我的链接?

ios - UITextField 与 PickerView : Don't allow editing

arrays - 'Int' 不能转换为 'Range<Int>

ios - 如何使tableview行高取决于其内容

ios - UIApplication.registerForRemoteNotifications() 只能从主线程调用

ios - 有没有办法仅在通过滑动导航时忽略辅助功能元素?

iOS 7 私有(private) API 使用

ios - Swift如何使用nil属性创建和测试对象?

ios - 删除与 imageView 一起使用的 subview