Formatowanie daty zgodnie ze standardem kraju

Odpowiedz Nowy wątek
2011-09-05 10:24
Ulv
0

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

Pewnie musisz poszukac "java" i "locale" - Endrju 2011-09-05 15:07

Pozostało 580 znaków

2011-09-05 15:25
Ulv
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

Pozostało 580 znaków

2011-09-05 15:35
2011-09-05 19:06
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() ) ) );

Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?

Pozostało 580 znaków

2011-09-07 15:56
Ulv
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 ?

A w języku polskim poprawny jest zapis "7 września 2011", "7 wrz" czy 7.9.2011? - Rev 2011-09-07 15:57

Pozostało 580 znaków

2011-09-07 16:50
Ulv
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())

Pozostało 580 znaków

2011-09-07 18:55
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.


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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