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