我使用Joda time包计算Android应用程序/活动中两个历史实例之间的持续时间。这两个例子可能发生在19世纪的俄罗斯(朱利安历法系统 - 在俄罗斯采用公历系统之前)和20世纪西欧历史系统(公历)。
不便之处在于,我现在必须根据我对特定国家实际转换日期的了解来选择Julian或Gregorian年代表。这些单独的转换日期可以在维基百科或文献中找到。
在我看来,我的问题有三种解决方案:
1)查看文献中所有国家的所有转换日期。然后手动打入各个时区的特定切换日期/时间。并使用GJChronology.getInstance(zone,factorySettingCutoverDateTimeMillis,4)中的出厂设置,其中factorySettingCutoverDateTimeMillis是一个long,包含特定实例在特定DateTimeZone区域中发生Julian和Gregorian日历之间切换时特定实例的毫秒值。
2)确定特定转换日期最终位于Jodatime(或其他可在Android中访问)的位置,然后使用它们。
3)使用dafault GJChronology.getInstance(zone,null,4)指定1582年10月的默认日期(对许多国家而言都是正确的,但不是全部)。
解决方案1)是可能的,但需要一些手工劳动来实施。解决方案2是最好的,而解决方案3)是我现在使用GJChronology中的默认值或选择Julian或Gregorian,如果我知道当时使用的特定日历系统。
我希望得到帮助,以获得解决方案2)或获得帮助,以指导我在线编制最佳编译切换日期/时间列表,以节省工作实施解决方案1)。谢谢你的帮助。
答案 0 :(得分:1)
我不相信 Joda Time在其中有这些信息 - 我当然没有遇到过它。 Joda Time中并不存在“国家”的概念,而且转换也不一定与时区相关。我相信这排除了解决方案2。
我不知道这些信息的任何官方来源 - 我不相信它在Unicode CLDR中,例如......但this page对您有用吗?我不知道它的完整性是否可靠,但我想这是一个开始:)