SimpleDateFormat(String template, Locale locale) with for example Locale.US for ASCII dates

后端 未结 3 1408
遥遥无期
遥遥无期 2021-01-31 07:48

Issue: Using SimpleDateFormat directly without an explicit locale Id: SimpleDateFormat

SimpleDateFormat format = new SimpleDateFormat(         


        
相关标签:
3条回答
  • 2021-01-31 07:58

    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());
    
    0 讨论(0)
  • 2021-01-31 08:07

    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.

    0 讨论(0)
  • 2021-01-31 08:09

    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.

    0 讨论(0)
提交回复
热议问题