Mysql
 sql >> Baza danych >  >> RDS >> Mysql

EEE MMM dd GG:mm:ss ZZZ rrrr format daty do java.sql.Date

    LocalDate date4 = ZonedDateTime
            .parse(date, DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH))
            .toLocalDate();
    java.sql.Date date5 = java.sql.Date.valueOf(date4);

Korzystam z nowoczesnych klas w java.time pakiet. Zauważasz, że kod jest nie tylko prostszy, ale po zapoznaniu się z płynnym stylem pisania nowszych klas jest on również bardziej przejrzysty.

Jeśli chcesz być w 100% nowoczesny, powinieneś również sprawdzić, czy Twój najnowszy sterownik MySQL JDBC nie zaakceptuje LocalDate bezpośrednio bez konwersji do java.sql.Date . Powinno.

Kilka szczegółów do zapamiętania

  • Jeśli chcesz, aby Twój kod działał na komputerach poza Twoją kontrolą, zawsze podawaj ustawienia regionalne swojemu programowi formatującemu, w przeciwnym razie ciąg daty nie może zostać przeanalizowany na komputerze z ustawieniami regionalnymi nieanglojęzycznymi. Możesz użyć Locale.ROOT dla neutralnej lokalizacji (mówi po angielsku).
  • Jeśli możesz, unikaj trzyliterowych skrótów stref czasowych. Wiele jest niejednoznacznych. EET to tak naprawdę tylko połowa strefy czasowej, ponieważ niektóre miejsca, w których jest używany, są teraz w EEST (czas letni). Lepiej użyć długiego identyfikatora strefy czasowej, takiego jak Europe/Bucharest lub przesunięcie względem czasu UTC, takie jak +02:00 .

Te punkty są ważne bez względu na to, czy używasz DateTimeFormatter lub SimpleDateFormat .

Jeśli nie możesz lub nie chcesz przejść do zalecanych nowszych klas, poprawka w kodzie to:

    SimpleDateFormat formatnow 
            = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH); 
    SimpleDateFormat formatneeded = new SimpleDateFormat("yyyy-MM-dd");

Używam małych liter zzz ponieważ jest to udokumentowane, aby pasowało do trzyliterowej nazwy strefy czasowej, wiem, że wielkie litery ZZZ działa też. Dodałem język. A co najważniejsze, w wymaganym formacie zmieniłem YYYY (rok w oparciu o tydzień) na yyyy (rok kalendarzowy) i DD (dzień roku) do dd (dzień miesiąca). Wszystkie te litery znajdują się w dokumentacji .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyj relacyjnych baz danych MySQL w Fedorze 14

  2. readyStatement błąd składni

  3. Wstaw do tabeli MySQL lub zaktualizuj, jeśli istnieje

  4. Skrypt Bash do wstawiania wartości w MySQL

  5. java.sql.SQLException:nie znaleziono odpowiedniego sterownika dla jdbc:mysql://localhost:3306/dbname