SimpleDateFormat(String template, Locale locale) with for example Locale.US for ASCII dates
Issue
: Using SimpleDateFormat directly without an explicit locale
Id
: SimpleDateFormat
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Why is the "To get local formatting use getDateInstance(), getDateTimeInstance(), or getTimeInstance(), or use new SimpleDateFormat(String template, Locale locale) with for example Locale.US for ASCII dates" error coming on this line.
http://developer.android.com/reference/java/text/SimpleDateFormat.html
Solution 1:
To remove the warning just add Locale.getDefault() as the second argument while instantiating the date format object. Eg.
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
java.util.Locale.getDefault());
Solution 2:
Careful about getDefault
though, as it might not be appropriate for all use-cases, especially machine-readable output. From the docs:
The default locale is not appropriate for machine-readable output. The best choice there is usually Locale.US – this locale is guaranteed to be available on all devices, and the fact that it has no surprising special cases and is frequently used (especially for computer-computer communication) means that it tends to be the most efficient choice too.
Solution 3:
It's a dumb lint warning. If you look at the SimpleDateFormat constructor source code it gets the default locale.
public SimpleDateFormat(String pattern) {
this(pattern, Locale.getDefault());
}
So adding it in your code is redundant and unnecessarily verbose. Locale.getDefault() is almost always what you want since that is what the user's device is set to. If for some reason you need it to always return, for example, "Monday" no matter what the user's language is set to than you can specify Locale.US but that seems like a rare situation.
The best thing to do is disable the dumb inspection.