Issue
:直接使用SimpleDateFormat而不使用显式语言环境
Id
:SimpleDateFormat
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
为什么“获取本地格式使用getDateInstance(),getDateTimeInstance()或getTimeInstance(),或者使用新的SimpleDateFormat(String模板,Locale语言环境),例如Locale.US用于ASCII日期“这条线上的错误。
http://developer.android.com/reference/java/text/SimpleDateFormat.html
答案 0 :(得分:112)
要删除警告,只需在实例化日期格式对象时添加Locale.getDefault()作为第二个参数。 例如
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
java.util.Locale.getDefault());
答案 1 :(得分:14)
小心getDefault
,因为它可能不适合所有用例,尤其是机器可读输出。来自docs:
默认语言环境不适合机器可读输出。最好的选择通常是Locale.US - 这个语言环境保证可以在所有设备上使用,并且它没有令人惊讶的特殊情况并经常使用(特别是用于计算机 - 计算机通信)这意味着它往往是最有效的选择。
答案 2 :(得分:9)
这是一个愚蠢的皮棉警告。如果查看SimpleDateFormat构造函数源代码,它将获得默认语言环境。
public SimpleDateFormat(String pattern) {
this(pattern, Locale.getDefault());
}
因此,在代码中添加它是多余的,并且不必要地冗长。 Locale.getDefault()几乎总是你想要的,因为这是用户设备的设置。如果由于某种原因你需要它总是返回,例如,"星期一"无论用户的语言设置为什么,都可以指定Locale.US,但这似乎是一种罕见的情况。
最好的办法是禁用哑巴检查。