【问题标题】:Creating a new NSCalendar calendar创建一个新的 NSCalendar 日历
【发布时间】:2009-08-26 12:25:26
【问题描述】:

我希望能够在 iPhone 上使用 NSCalendar 在公历和儒略历之间进行转换(注意:不是“儒略日期”)。如何子类 NSCalendar 以使用儒略历?我想这样做而不考虑 1582 或 1752 或任何给定的年份。

【问题讨论】:

    标签: cocoa gregorian-calendar nscalendar


    【解决方案1】:

    虽然您当然可以尝试一下,但我怀疑 NSCalendar 难以继承。它是免费桥接的,这使事情变得复杂;与 NSLocale 纠缠在一起,使事情变得复杂;它是用标识符初始化而不是被子类化,这使事情变得复杂;并且没有提供关于哪些方法是它的原语的指导......这使事情变得复杂......

    您是否需要子类才能插入现有架构?如果没有,从头开始创建一个具有类似界面的对象可能是最简单的。您可以使用NSGregorianCalendar 为您完成大部分工作,并在计算日期组件之前将日期偏移必要的天数。您将需要 1700、1800 和 1900(当然还有 2100 等)的特殊逻辑,因为 NSGregorianCalendar 不会让您为那些年的闰日创建日期组件,但这仍然可能比完成所有手动计算日期分量。

    只是好奇这样的日历的目标是什么?

    【讨论】:

    • 我的教会在我们的庆祝活动中使用儒略历。我正在考虑编写一个列出即将举行的纪念活动的程序。例如,儒略历的 12 月 25 日当前比公历晚 13 天(1 月 7 日)。我可以很容易地写一些东西,根据公历取当前日期并减去 13 天来给出儒略历上的日期。问题是,星期是错误的(公历 2009 年 1 月 7 日星期三是儒略历 2008 年 12 月 25 日星期三,而不是星期四)。我想我只能手动破解它。
    • 我假设您不必担心下一个发散闰年(2100 年 2 月),所以听起来您可以从公历计算星期几,然后减去 13 天获取儒略日期的其余日期组件。不优雅,但至少在几十年内有效。并且可以快速编码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多