sql >> Database >  >> RDS >> Mysql

EEE MMM dd HH:mm:ss ZZZ jjjj datumnotatie naar java.sql.Datum

    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);

Ik gebruik de moderne klassen in de java.time pakket. Je merkt dat de code niet alleen eenvoudiger is, als je eenmaal bekend bent met de vloeiende schrijfstijl van de nieuwere klassen, is het ook overzichtelijker.

Als u 100% modern wilt zijn, moet u ook controleren of uw nieuwste MySQL JDBC-stuurprogramma geen LocalDate accepteert direct zonder conversie naar java.sql.Date . Het zou moeten.

Een paar details om op te merken

  • Als u uw code wilt laten draaien op computers waar u geen controle over heeft, geef dan altijd de landinstelling door aan uw formatter, anders kan uw datumtekenreeks niet worden geparseerd op een computer met een niet-Engelstalige landinstelling. Je mag Locale.ROOT . gebruiken voor een locale neutrale locale (het spreekt Engels).
  • Als je kunt, vermijd dan de drieletterige afkortingen voor tijdzones. Velen zijn dubbelzinnig. EET is eigenlijk maar een halve tijdzone, aangezien sommige plaatsen waar het wordt gebruikt nu op EEST (zomertijd) zijn. Het is beter om ofwel een lange tijdzone-ID te gebruiken, zoals Europe/Bucharest of een offset van UTC zoals +02:00 .

Deze punten zijn geldig ongeacht of u DateTimeFormatter . gebruikt of SimpleDateFormat .

Als je niet naar de aanbevolen nieuwere klassen kunt of wilt gaan, is de oplossing voor je code:

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

Ik gebruik kleine letters zzz aangezien dit is gedocumenteerd om overeen te komen met een drieletterige tijdzonenaam, weet ik dat hoofdletters ZZZ werkt ook. Ik heb landinstelling toegevoegd. En misschien wel het belangrijkste, in het benodigde formaat heb ik YYYY . gewijzigd (weekgebaseerd jaar) tot yyyy (kalenderjaar) en DD (dag van het jaar) tot dd (dag van de maand). Al die letters staan ​​in de documentatie .



  1. Een weergave gebruiken zonder primaire sleutel met Entiteit

  2. PHP - Beveiligde ledenpagina's met een inlogsysteem

  3. SQL (ORACLE):ORDER BY en LIMIT

  4. Hoe door komma's gescheiden waarden naar rijen in orakel te converteren?