• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java - Operacje na dacie...

Object Storage Arubacloud
0 głosów
694 wizyt
pytanie zadane 13 maja 2016 w Java przez mkl215 Początkujący (280 p.)
edycja 13 maja 2016 przez mkl215

Hejka. nazywam się Marcin, jestem anonimowym programistą, mam problem :)

Chcę wczytać datę z łańcucha znaków, jednak mam z góry narzucony format daty:
sData1 = "29-Mar-1998";

W tym przypadku korzystam z dobrodziejstw Java 8 i klasy DateTimeFormatter:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");

Jednak tu pojawia się problem, prawdopodobnie związany z językową strefą czasową, bo w takim przypadku:
sData2 = "29-mar-1998"; // wszystko pięknie śmiga, mogę zrobić cokolwiek zechcę
Jednak przy sData1 otrzymuję wyjątek:
DateTimeParseException: Text '29-Mar-1998' could not be parsed at index 3

Pomożecie? Ogólnie mógłbym zmienić w jednym takim łańcuchu znakowym te literki czy w danym pliku, jednak takich dat mam więcej niż 10 tysięcy :), a wujek google nie daje mi żadnych wskazówek... Przykładowy kod programu, z trzeba przykładowymi łańcuchami:

public class testDaty {
    public static void main(String[] args) {
        String sData1 = "29-Mar-1998"; // <- wyrzuca wyjątek...
        String sData2 = "29-mar-1998"; // <- działa

        String sData2 = "12-Jan-2010"; // Mam ich więcej do obsłużenia...
        String sData3 = "02-Nov-1999";

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
        
        LocalDate date = LocalDate.now();     //     Przykładowa klasa daty
        String text = date.format(formatter);    //     Ogólnie formatter działa
        System.out.println(text);    // Ani wyjątku, ani problemu out: "13-maj-2016"

        LocalDate date1 = LocalDate.parse(sData1, formatter);    // tu problem...
        System.out.println(date1);
    }
}

 

komentarz 13 maja 2016 przez iWantCode Bywalec (2,170 p.)
może wcześniej pozamieniaj litery na małe
komentarz 14 maja 2016 przez mkl215 Początkujący (280 p.)
Jeśli w pliku masz koło 2 milionów dat to zamiana wszystkich na "małe" litery (do tego nie wiem czy mamy taką datę jak Jun... albo Apr... więc chyba nie pomoże).

Chodziło bardziej o dodanie opcji lokalizacji formatu daty, patrz jedną odpowiedź niżej.

Pozdrawiam

1 odpowiedź

+1 głos
odpowiedź 13 maja 2016 przez bumpMind Gaduła (4,260 p.)

Może to Ci pomoże stackoverflow

komentarz 14 maja 2016 przez mkl215 Początkujący (280 p.)

Działa :)

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy", Locale.UK);

Kluczowy jest tu drugi argument - domyślny raczej tam gdzie jest JVM, czyli w moim przypadku Polska, dlatego format zapisu daty był skrótem po polsku, a wystarczyło ustawić inny, tego właśnie znaleźć nie mogłem :) Dzięki !!!

komentarz 14 maja 2016 przez bumpMind Gaduła (4,260 p.)
No problem ;)

Podobne pytania

0 głosów
1 odpowiedź 1,795 wizyt
pytanie zadane 13 grudnia 2017 w Java przez victordeleco2 Użytkownik (920 p.)
0 głosów
1 odpowiedź 575 wizyt
pytanie zadane 22 kwietnia 2017 w PHP przez niezalogowany
0 głosów
2 odpowiedzi 140 wizyt
pytanie zadane 29 stycznia 2019 w Java przez Patryk01 Obywatel (1,270 p.)

92,583 zapytań

141,434 odpowiedzi

319,668 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...