timeOfMark = Calendar.getInstance(Locale.ENGLISH);
Map<String, Integer> what = timeOfMark.getDisplayNames(Calendar.HOUR, Calendar.SHORT, Locale.ENGLISH);
for(Map.Entry<String, Integer> pair : what.entrySet())
{
Log.e(pair.getKey(), Integer.toString(pair.getValue()));
}
此案例导致我的Android应用程序崩溃,因为Log.e无法接受空字符串。
是一回事
timeOfMark.getDisplayName(Calendar.HOUR, Calendar.SHORT, Locale.ENGLISH);
我尝试了许多带输入参数的变体。对于语言环境,我也做了Locale.getDefault()等等。仍然相同 * *
没有运气。有什么可以解决的吗?还是一个简单的解决方法?
答案 0 :(得分:9)
public Map getDisplayNames(int field,int style,Locale locale)
此方法返回包含样式和区域设置及其字段值的所有显示名称的Map,如果没有可用的字符串表示,则返回null
。
timeOfMark.getDisplayName(Calendar.HOUR, Calendar.SHORT, Locale.ENGLISH);
没有HOUR的字符串表示,即您可以在HOURS
中表达string
,就像我们为MONTH和DAY_OF_WEEK所做的那样
试试WEEK,MONTH 实施例
Map< String, Integer> representations =
now.getDisplayNames(Calendar.MONTH, Calendar.ALL_STYLES, locale);
你会得到
{Apr=3, April=3, Aug=7, August=7, Dec=11, December=11, Feb=1, February=1, Jan=0, January=0, Jul=6, July=6, Jun=5, June=5, Mar=2, March=2, May=4, Nov=10, November=10, Oct=9, October=9, Sep=8, September=8}
对于Calendar.DAY_OF_WEEK
{Fri=6, Friday=6, Mon=2, Monday=2, Sat=7, Saturday=7, Sun=1, Sunday=1, Thu=5, Thursday=5, Tue=3, Tuesday=3, Wed=4, Wednesday=4}
试试这里