java - 在 icu4j 中获取 islamicCalendar 中月份和星期几的显示名称

标签 java android icu4j

在 icu4j 中,我们可以像这样通过区域设置显示月份名称

 SimpleDateFormat formatter
                = new SimpleDateFormat ("yyyy MMM dd");
        String dateString = formatter.format(calendar.getTime());

返回带有公历月份名称的当前日期。
但 是否可以使用 icu4j 获取伊斯兰月份的月份名称。

最佳答案

ULocale locale = new ULocale("@calendar=islamic");
Calendar islamicCalendar = Calendar.getInstance(locale);

// full date
DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, locale);
System.out.println(df.format(islamicCalendar.getTime()));

// date in "yyyy MMM dd" format
SimpleDateFormat df1 = new SimpleDateFormat ("yyyy MMM dd", locale);
System.out.println(df1.format(islamicCalendar.getTime()));

// name of month 
SimpleDateFormat df2 = new SimpleDateFormat (SimpleDateFormat.MONTH, locale);
System.out.println(df2.format(islamicCalendar.getTime()));

// name of weekday
SimpleDateFormat df3 = new SimpleDateFormat (SimpleDateFormat.WEEKDAY, locale);
System.out.println(df3.format(islamicCalendar.getTime()));

输出:

AH 1438 Rabiʻ I 5, Sun

1438 Rab. I 05

Rabiʻ I

Sun

如果您希望输出在特定的语言环境中,请将该语言环境放在 @calendar=islamic 之前:

阿拉伯语区域示例:

ULocale locale = new ULocale("ar@calendar=islamic");
...

输出:

الأحد، ٥ ربيع الأول، ١٤٣٨ هـ

١٤٣٨ ربيع الأول ٠٥

ربيع الأول

الأحد

关于java - 在 icu4j 中获取 islamicCalendar 中月份和星期几的显示名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40838935/

相关文章:

java - 在 Rest-Assured 中重复查询参数

Javadoc 多包

android - 将 MountSpec 组件与 "wrap_content" View 一起使用 - 如何实现 onMeasure()

java - 如何在 ICU4J 中获得 "current"IANA 时区缩写?

java - Android 中的 BreakIterator 错误地计算字符

java - 仅显示最大数字,而我想打印两个整数之间的所有数字

java - 从事件对象打印所有时间间隔的好方法

android - 我应该为 Admob 中的每个横幅和插页式广告设置不同的 id

android - 推送通知未打开正确的屏幕