qwl*_*ice 23 java datetime android calendar
我正在为一家埃塞俄比亚公司开发 Android 应用程序,并且必须处理日期。
埃塞俄比亚使用的日历与公历相似,但有两个主要区别:它设置为大约。7年前,还有13个月。当我发布这个问题时,公历的日期是 2021 年 9 月 13 日,埃塞俄比亚的日期是 2014 年 3 月 1 日。
我的问题是:
Android 是否支持埃塞俄比亚日历?埃塞俄比亚人是否习惯让他们的设备使用它?
如果是这样,我是否必须获取默认格式化程序(使用默认日历:)Calendar.getInstance()才能正确格式化日期?
相反,如果设备使用公历,Java 如何支持转换为埃塞俄比亚日期?
为了模拟完整的场景,并且设备设置了正确的当前埃塞俄比亚日期(就像来自网络提供商)和区域设置,您有什么建议?
Bas*_*que 10
虽然我对这些日历系统一无所知,也许\xe2\x80\xa6
\n将ThreeTen-Extra库添加到您的项目中,以访问EthiopicChronology插入与Android 捆绑的java.time框架的类。
\n\n该年表定义了埃塞俄比亚历法系统的规则。该日历系统主要在埃塞俄比亚使用。日期对齐,使得 0001-01-01(埃塞俄比亚)为 0284-08-29(ISO)。
\n
您也可以CopticChronology在那里找到课程。
埃塞俄比亚日历是一种当地日历,在埃塞俄比亚本土颇受欢迎。是的,这个国家甚至还有一种特殊的计时模式,从早上 6 点开始计时。不过,由于 Android、IOS 或 Windows 等常见操作系统缺乏足够的支持,我不确定日历是否也广泛应用于手机上。在埃塞俄比亚之外,它可能只与散居国外的有宗教信仰的埃塞俄比亚人相关。
您可以找到 IBM 提供的EthiopicCalendar类提供的一些支持。我强烈认为支持阿姆哈拉语数字(但不完全确定)。我对将上午 6 点作为一天的开始并计数为零(如果您询问当前日期则相关)的支持不太有信心。IBM 说(与 的标准用法类似但不完全相同Calendar.getInstance()):
EthiopicCalendar 通常应使用 Calendar.getInstance(ULocale) 进行实例化,传入带有标签“@calendar=ethiopic”的 ULocale。
IBM 的 API 通过自 1970-01-01T00:00Z 以来的毫秒计数提供公历的转换,反之亦然。对于格式化或解析,请使用IBM 的专用格式化程序引擎。注意,它不是 Android 的标准格式化引擎。当然,您仍然需要担心奇怪的功能,例如将第一个月计算为数字零(而不是一)。
我的库 Time4A 也是为 Android 编写的,是主库 Time4J 的姐妹项目。这两个库都包含类EthiopianCalendar和EthiopianTime。您将在 javadoc 中找到一些代码示例。还支持非十进制阿姆哈拉语数字。这些类还需要一个特殊的格式化引擎,称为ChronoFormatter。与 IBM 的情况一样,埃塞俄比亚月份名称Meskerem(即使是阿姆哈拉语或其他语言)也得到了很好的支持。
可以通过表达式获得到公历的转换(反之亦然),ethiopianDate.transform(PlainDate.axis())其中参数表示目标日历(此处PlainDate为公历类型)。