首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleDateFormat(String,locale),例如Locale.US用于ASCII日期

SimpleDateFormat(String,locale),例如Locale.US用于ASCII日期
EN

Stack Overflow用户
提问于 2013-07-23 10:37:09
回答 3查看 41.8K关注 0票数 53

Issue:直接使用SimpleDateFormat而不使用显式区域设置Id:SimpleDateFormat

代码语言:javascript
复制
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

为什么“获取本地格式化使用getDateInstance()、getDateTimeInstance()或getTimeInstance(),或者使用新SimpleDateFormat(String template,Locale locale),例如,为ASCII 使用Locale.US”错误出现在这一行。

http://developer.android.com/reference/java/text/SimpleDateFormat.html

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-23 10:49:30

要删除警告,只需添加Locale.getDefault()作为第二个参数,同时实例化日期格式对象。例如:

代码语言:javascript
复制
 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
                    java.util.Locale.getDefault());
票数 129
EN

Stack Overflow用户

发布于 2015-06-30 07:25:52

但是要小心getDefault,因为它可能不适合所有用例,特别是机器可读的输出。来自文档

默认的区域设置不适合机器可读的输出。最好的选择通常是Locale.US --这个地方保证在所有设备上都可以使用,而且它没有什么奇怪的特例,而且经常被使用(特别是在计算机与计算机之间的通信中),这意味着它也是最有效的选择。

票数 17
EN

Stack Overflow用户

发布于 2015-11-12 23:48:06

这是个愚蠢的警告。如果查看SimpleDateFormat构造函数源代码,它将获得默认的区域设置。

代码语言:javascript
复制
public SimpleDateFormat(String pattern) {
    this(pattern, Locale.getDefault());
}

因此,将其添加到代码中是多余的,不必要地冗长。Locale.getDefault()几乎总是您想要的,因为这是用户的设备设置的内容。如果出于某种原因,您需要它始终返回,例如,“星期一”,无论用户的语言设置为什么,都不能指定Locale.US,但这似乎是一种罕见的情况。

最好的办法就是让哑巴检查无效。

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

https://stackoverflow.com/questions/17807777

复制
相关文章

相似问题

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