sql >> Databasteknik >  >> RDS >> Mysql

EEE MMM dd HH:mm:ss ZZZ åååå datumformat till 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);

Jag använder de moderna klasserna i java.time paket. Du märker att koden inte bara är enklare, när du väl har bekantat dig med den flytande skrivstilen i de nyare klasserna är den också tydligare.

Om du ville vara 100 % modern bör du också kolla om din senaste MySQL JDBC-drivrutin inte skulle acceptera en LocalDate direkt utan konvertering till java.sql.Date . Det borde det.

Några detaljer att notera

  • Om du behöver din kod för att köras på datorer utanför din kontroll, ange alltid språk till din formatterare, annars kan din datumsträng inte tolkas på en dator med en icke-engelsktalande språkversion. Du kan använda Locale.ROOT för ett lokalt neutralt språk (den talar engelska).
  • Om du kan, undvik tidszonförkortningarna med tre bokstäver. Många är tvetydiga. EET är egentligen bara en halv tidszon eftersom vissa platser där det används är på EEST (sommartid) nu. Bättre att använda antingen ett långt tidszon-ID som Europe/Bucharest eller en offset från UTC som +02:00 .

Dessa punkter är giltiga oavsett om du använder DateTimeFormatter eller SimpleDateFormat .

Om du inte kan eller vill gå vidare till de rekommenderade nyare klasserna är korrigeringen till din kod:

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

Jag använder gemener zzz eftersom detta är dokumenterat att matcha ett tidszonnamn på tre bokstäver vet jag att ZZZ versaler fungerar också. Jag har lagt till språk. Och kanske viktigast av allt, i det format som behövs har jag ändrat YYYY (veckobaserat år) till yyyy (kalenderår) och DD (dag på året) till dd (dagen i månaden). Alla dessa bokstäver finns i dokumentationen .



  1. Hur kan jag hasha lösenord i postgresql?

  2. Databasdesign:Beräknar kontosaldot

  3. MariaDB JSON_MERGE_PRESERVE() Förklarad

  4. Migrera från MySQL Enterprise till MariaDB 10.3