-1

I use this simple code to get dateTime pattern:

((SimpleDateFormat) DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM)).toPattern()

For US locale results for Linux and Windows are equal. And for RU / UK locales they are different!

US: Windows: M/d/yy h:mm:ss a Linux: M/d/yy, h:mm:ss a

UK: Windows: dd/MM/yy HH:mm:ss Linux: dd/MM/y, HH:mm:ss

RU: Windows:dd.MM.yy H:mm:ss Linux: dd.MM.y, H:mm:ss

What's the reason and what to do?

UPD: SimpleDateFormat and locale based format string has no answers to my question. I need String pattern - and I can't get it using DateTimeFormater class.

  • 2
    `What's the reason?` - [Locale](https://docs.oracle.com/javase/7/docs/api/java/util/Locale.html). Anyway you should look at [java8+ date/time API](https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html) – rkosegi Nov 12 '20 at 13:51
  • Does this answer your question? [SimpleDateFormat and locale based format string](https://stackoverflow.com/questions/1661325/simpledateformat-and-locale-based-format-string) – rkosegi Nov 12 '20 at 13:52
  • So you suggest me to use java.time classes? But I need pattern as String. And I can't get string pattern from DateTimeFormatter. – Andrei Filipchyk Nov 12 '20 at 14:10
  • You want [DateTimeFormatterBuilder.getLocalizedDateTimePattern](https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/time/format/DateTimeFormatterBuilder.html#getLocalizedDateTimePattern(java.time.format.FormatStyle,java.time.format.FormatStyle,java.time.chrono.Chronology,java.util.Locale)). – VGR Nov 12 '20 at 16:09
  • @VGR, thank you! It should be accepted answer! Can you write this as answer? – Andrei Filipchyk Nov 13 '20 at 06:49

1 Answers1

1

If you need a pattern string, you can use DateTimeFormatterBuilder.getLocalizedDateTimePattern to obtain it. Be aware that DateTimeFormatter uses a slightly different set of pattern letters than SimpleDateFormat.

VGR
  • 40,506
  • 4
  • 48
  • 63