SimpleDateFormat warning To get local formatting use getDateInstance(), getDateTimeInstance(), or getTimeInstance(),

后端 未结 3 1872
再見小時候
再見小時候 2020-12-25 10:30

Do i need to be worried about this warning? What if I ignore the warning?
What does this warning mean:
To get local formatting use getDateInstance(),

相关标签:
3条回答
  • 2020-12-25 11:10

    You can ignore it, but the warning is there to let you know the dates may display unexpectedly for users using a different language. If you want to force the format in your own locale, use Locale.US (or whichever locale matches your format requirements). Otherwise use one of the getInstance() methods for localized formatting.

    0 讨论(0)
  • 2020-12-25 11:17

    Same for kotlin

            //example long 1372339860 
            fun getDateTime(unixSeconds: Long): String {
             val date = java.util.Date(unixSeconds * 1000L)
    
             val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss z", Locale.getDefault())
             return simpleDateFormat.format(date)
            }
    

    Call like this getDateTime(1372339860)

    It will return 27.6.2013 15:31:00 GMT +2 The GMT+2 because I'm in Germany and we have summer time. You can use Locale.US as well.

    0 讨论(0)
  • 2020-12-25 11:29

    You are currently using the SimpleDateFormat(String) constructor. This implies the default locale and as the Locale documentation tells you, be wary of the default locale as unexpected output can be produced on various systems.

    You should instead use the SimpleDateFormat(String, Locale) constructor. It is going to take in an additional parameter - the locale you want to use. If you want to make sure the output is machine-readable in a consistent way (always looks the same, regardless of the actual locale of the user), you can pick Locale.US. If you do not care about machine redability, you can explicitly set it to use Locale.getDefault().

    Using those on your example code would look something like this:

    // for US
    SimpleDateFormat sdfDate = new SimpleDateFormat("d MMM yyyy", Locale.US);
    
    // or for default
    SimpleDateFormat sdfDate = new SimpleDateFormat("d MMM yyyy",
            Locale.getDefault());
    
    0 讨论(0)
提交回复
热议问题