首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android中给定区域设置的自定义日期格式

android中给定区域设置的自定义日期格式
EN

Stack Overflow用户
提问于 2012-02-11 19:46:28
回答 3查看 3.4K关注 0票数 2

我正在尝试格式化给定区域设置new Locale("mk", "MK")的日期。区域设置有效,它会正确返回国家/地区名称和语言。我想使用自定义字符串,在我的例子中是"E,kk:mm“或"EEEE,kk:mm”。我希望输出是"сабота,12:00",但得到的是"7,12:00“。

这就是我使用它的方式,我尝试了很多方法,但它们似乎都表现得一样。

代码语言:javascript
复制
SimpleDateFormat sdf = new SimpleDateFormat("EEEE, kk:mm", new Locale("mk", "MK));
sdf.format(new Date());
// output: 7, 12:30

我尝试过的另一种方法

代码语言:javascript
复制
Calendar calendar = Calendar.getInstance(new Locale("mk", "MK"));
calendar.setTimeInMillis(new Date().getTime());
DateFormat.format("EEEE, kk:mm", calendar);
// output: Saturday, 12:30

我也尝试过使用java.text.DateFormat代替android类,但是没有变化。

手机的地区设置为英语,但这是一个本地化的应用程序,我想以固定的地区格式显示日期。

我已经调查了很多关于这个问题的问题,但是我找不到答案。我对预定义的格式不感兴趣,我想使用我自己的格式,我希望日期/月份名称的格式符合输入语言环境。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-11 21:47:00

我认为问题在于,在Android JVM上,马其顿不是一个受支持的语言环境。如果您将代码作为普通的Java控制台应用程序运行,就可以了。Locale.getAvailableLocales()方法在纯Java语言中返回152个成员,而在Android模拟器中只返回88个成员。如果您有代码片段:

代码语言:javascript
复制
Locale[] locales = Locale.getAvailableLocales();
   String cCode;
   for (Locale loc :locales){
       cCode = loc.getCountry();
       if (cCode.equalsIgnoreCase("MK"))
            Toast.makeText(this, cCode, Toast.LENGTH_SHORT).show();
        // Or System.out.println() in a Java app    
}

那么toast不会显示为"MK“,尽管它将在Java应用程序中显示println

票数 3
EN

Stack Overflow用户

发布于 2012-02-11 19:54:13

来自SimpleDateFormat的文档:

代码语言:javascript
复制
**Text**: For formatting, if the number of pattern letters is 4 or more, 
the full form is used; otherwise a short or abbreviated form is used if 
available. For parsing, both forms are accepted, independent of the 
number of pattern letters.

所以这应该可以解决这个问题:

代码语言:javascript
复制
SimpleDateFormat sdf = new SimpleDateFormat("EEEE, kk:mm", new Locale("mk", "MK"));
票数 2
EN

Stack Overflow用户

发布于 2012-02-11 21:52:50

NickT更快:-),所以只需补充他的答案:如果你想看到你的区域设置在安卓上受支持,运行:

代码语言:javascript
复制
for (Locale l:Locale.getAvailableLocales()) {
    Log.d(l.getDisplayCountry(),l.toString()); 
}

你会看到,马其顿不在名单上。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9239937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档