SimpleDateFormat警告要获取本地格式,请使用getDateInstance(),getDateTimeInstance()或getTimeInstance(),

Moh*_*Ali 26 java android simpledateformat

我需要担心这个警告吗?如果我忽略警告怎么办?
这是什么警告表示:
为了让本地格式使用getDateInstance(),getDateTimeInstance()或者getTimeInstance(),也可以使用new SimpleDateFormat(String template, Locale locale)具有例如Locale.US用于ASCII日期.
在下面的代码的第二行.该应用程序与代码正常工作.我想显示日期,例如19 Nov 2014.

public static String getFormattedDate(long calendarTimeInMilliseconds) {
    SimpleDateFormat sdfDate = new SimpleDateFormat("d MMM yyyy");  //ON THIS LINE
    Date now = new Date();
    now.setTime(calendarTimeInMilliseconds);
    String strDate = sdfDate.format(now);
    return strDate;
}
Run Code Online (Sandbox Code Playgroud)

我觉得这是如图所示日期格式以正确的方式在这里.

Val*_*ons 49

您当前正在使用SimpleDateFormat(String)构造函数.这意味着默认语言环境,并且Locale文档告诉您,要警惕默认语言环境,因为可以在各种系统上生成意外输出.

您应该使用SimpleDateFormat(String,Locale)构造函数.它将接收一个额外的参数 - 您要使用的区域设置.如果要确保输出以一致的方式是机器可读的(无论用户的实际区域设置如何,总是看起来相同),您可以选择Locale.US.如果您不关心机器可重复性,可以将其显式设置为使用Locale.getDefault().

使用示例代码上的代码看起来像这样:

// for US
SimpleDateFormat sdfDate = new SimpleDateFormat("d MMM yyyy", Locale.US);

// or for default
SimpleDateFormat sdfDate = new SimpleDateFormat("d MMM yyyy",
        Locale.getDefault());
Run Code Online (Sandbox Code Playgroud)


Jst*_*wll 6

您可以忽略它,但警告是为了让您知道对于使用不同语言的用户,日期可能会意外显示。如果您想在您自己的区域设置中强制使用该格式,请使用Locale.US(或与您的格式要求匹配的任何区域设置)。否则,请使用 getInstance() 方法之一进行本地化格式化。