Formatowanie daty zgodnie ze standardem kraju

0

Jak uzyskać odpowiedni dla kraju zapis daty ? U nas zapisuje się inaczej, w Stanach też.

0

Ok, Locale pomogą mi w przesunięciu czasowym, ale jak z formatowaniem daty ??? Która metoda konkretnie ?

rok-miesiąc-dzień u nas
rok-dzień-miesiąc w Stanach

coś podobnego

0

Możesz poeksperymentować z indeksem poniższej tablicy, żeby dobrać najlepszy zestaw:

private static DateFormat[] formatyDat =
{
	DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT),
	DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT),
	DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM),
	DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM),
	DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL),
};

Przykładowe użycie:

System.out.println( "boot.log modified: " +
	formatyDat[1].format( new Date( new File("/boot.log").lastModified() ) ) );
0

Ok, a da się to uzależnić od Locale ?

Bo teraz na sztywno wpisujesz "DateFormat.SHORT", ale skąd mam wiedzieć, czy dla danego kraju ma być SHORT, czy LONG ? Czy jakaś metoda jest to w stanie odgadnąć na podstawie Locale ?

0

Faktycznie - to jest zależne tylko od Locale. Jak ktoś na początku wskazywał. Niepotrzebnie wplątywałem parametry rozmiaru (SHORT, FULL etc) w poprzednim poście.

DateFormat format = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.US)

Tyle wystarczy :). A potem

format.format(new Date())

0

Jak widzisz wystarczy poczytać javadoc. Co do wersji FULL, FULL, to jest to bardzo rozwlekły sposób, którego w praktyce niemal się nie używa. Najczęściej używane są SHORT, SHORT lub MEDIUM, SHORT. Jeżeli podajesz pełną datę, to zazwyczaj do niczego nie są potrzebne sekundy, a jak potrzebujesz sekund, to data ma zwykle mniejsze znaczenie i może być jak najkrótsza.

Co do Locale, to możesz próbować kontrolować w swojej aplikacji dla jakiego kraju ma pracować - ale moim zdaniem jest to nadmiar regulacji. To robi za Ciebie system operacyjny, który ma te ustawienia z założenia poprawne (jeżeli tak nie jest, to admin powinien ustawić to w systemie, a nie user w Twojej i każdej innej aplikacji). Dzisiaj praktycznie wszystkie systemy operacyjne obsługują lokalizację, więc nie ma potrzeby zabierać im tej funkcjonalności.

Jedyny sens w bawieniu się różnymi Locale jaki widzę, to parsowanie dat i czasów w sytuacji kiedy znasz kraj danych wejściowych i ewentualnie formaty daty i czasu. Program konwertujący dane daty/czasu z postaci tekstowej byłby dobrym przykładem. Można wtedy próbować testować parsowanie ze wszystkimi kombinacjami i poddać się dopiero, kiedy żadna kombinacja nie będzie poprawnie parsowana.

1 użytkowników online, w tym zalogowanych: 0, gości: 1